Ruby Sorting - nil값이 있는 경우
Jan 13, 17
dev
ruby
Sort
array.sort
는 array.sort { |x, y| x <=> y }
와 동일
x, y는 sorting algorithm에서 선택하는 array의 두 element
<=>
연산자의 뜻은
return -1 if x < y
return 0 if x = y
return 1 if x > y
nil값을 가지는 경우의 sorting
array = [1, 2, nil, 3, 5]
array.sort { |a, b| a && b ? a<=>b : a ? -1 : 1 }
--> [1, 2, 3, 5, nil]
a && b ? a <=> b
a, b 둘다 존재하면 정상적으로 a<=>b 연산으로 sorting
a ? -1 : 1
a가 nil인 경우, 1을 반환 (즉 a > b 인 것으로 처리)
b가 nil인 경우, -1을 반환 (즉 a < b 인 것으로 처리)
–> nil이 제일 큰 수로 취급해서 ascending order로 sorting한 경우 가장 마지막에 위치하게 됨.
StackOverflow: how-does-arraysort-work-when-a-block-is-passed
StackOverflow: sorting-a-ruby-array-of-objects-by-an-attribute-that-could-be-nil