ソートしようとしている配列にnilが含まれているとエラーとなる。
irb(main):003:0> [1,2,nil,4,5].sort
Traceback (most recent call last):
3: from /Users/colorbox/.rbenv/versions/2.5.0/bin/irb:11:in `<main>'
2: from (irb):3
1: from (irb):3:in `sort'
ArgumentError (comparison of Integer with nil failed)
配列内の値にもよるがto_i
やto_s
を利用することで安全にソート可能。
irb(main):004:0> [1,2,nil,4,5].sort { |a,b| a.to_s <=> b.to_s }
=> [nil, 1, 2, 4, 5]
もしくはcompact
などを利用しても良い
irb(main):009:0> [1,2,nil,4,5].compact.sort
=> [1, 2, 4, 5]