Array#reject!nilと比較して、ブロックがレシーバーのすべての要素に対して評価された場合に戻りますfalse(これはその場で変更され、この場合は変更されません) Array#reject。
a=1,2,3
a.reject {false} # => [1, 2, 3]
a.reject! {false} # => nil
これは私にはかなり奇妙に思えます。なぜArray#reject!そうするように設計されたのですか?Array#reject!この場合のように振る舞うべきArray#rejectですか?
select!、 、reject!などのメソッドをチェーンできるようにしたいと考えていますmap!。それを行う方法はありますか?