Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

deleteメソッドでnilを消す時は注意

配列のdeleteメソッドは、返り値として引数と一致した場合selfを返します。
よって、nilを削除しようとすると、返り値にnilを返してきます。
これでは結果がわかりません。
更に厄介な事には、破壊的メソッドなので後々にも影響が出ます。

> ary = [1,2,3,nil,4]
#=> [1, 2, 3, nil, 4]

> ary.delete(nil)
#=> nil

> ary
#=> [1, 2, 3, 4]

気軽に使うメソッドではなかったみたいですね(白目

こういう場合は素直にcomapctを使えば綺麗になります。

> ary = [1,2,3,nil,4]
#=> [1, 2, 3, nil, 4]

> ary.compact
#=> [1, 2, 3, 4]

> ary
#=> [1, 2, 3, nil, 4]

> ary.compact
#=> [1,2,3,4]

参考もと