rubyのcompact!を使うときに覚えておきたいこと
compact!とは
compact は自身から nil を取り除いた配列を生成して返します。 compact! は自身から破壊的に nil を取り除き、変更が行われた場合は self を、そうでなければ nil を返します。
compact! はArrayに nil が含まれるかどうかで戻り値の型が変わるので
# compact! irb(main):007:0> [1,2,3,nil].compact! => [1, 2, 3] irb(main):008:0> [1,2,3].compact! => nil # compact irb(main):009:0> [1,2,3,nil].compact => [1, 2, 3] irb(main):010:0> [1,2,3].compact => [1, 2, 3]
メソッドチェーンする場合は compact を使った方が事故がない。