Array#compact
Array#compactは、nil以外の要素を集めた新しい配列を作って返します。
まず、compactしない場合の例。
p [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7].map {|k| if k >= 5 then k else nil end } #=> [nil, nil, nil, nil, 5, 9, nil, 6, 5, nil, 5, 8, 9, 7]
compactすると、次のようになります。
p [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7].map {|k| if k >= 5 then k else nil end }.compact #=> [5, 9, 6, 5, 5, 8, 9, 7]
要素からnilが消えました。