`Array#reject!` returns `nil` in case the block evaluates to `false` for every element in the receiver (which is altered in place, and in this case does not change), in comparison to `Array#reject`:

```
a=1,2,3
a.reject {false} # => [1, 2, 3]
a.reject! {false} # => nil

```

This seems to me rather weird. Why has `Array#reject!` been designed to do so? Should `Array#reject!` behave like `Array#reject` in this case?

I would like to be able to chain methods like `select!`, `reject!` and `map!`. Is there a way to do that?