Array#select! と Parameters#select! の返り値が違う
-
Arrayの方は,ブロックの返り値の全部がtrueを返した場合にnilを返している- 変化が無いので
selfを返さないとのこと
- 変化が無いので
-
ActionController::Parametersの方は,最後にselfを強制的に返すようになっている
普通はひっかからないと思うけど,これに依存したコードを書くのは良くなさそうなので,一応記す.
→ select! を使わないだろう.の意
Refs
a = %w{ a b c d e f }
a.select! {|v| v =~ /[a-z]/ } # => nil
a # => ["a", "b", "c", "d", "e", "f"]
Equivalent to Hash#keep_if, but returns nil if no changes were made.
def select!(&block)
@parameters.select!(&block)
self
end
keep_if は常に self を返します。 filter! と select! はオブジェクトが変更された場合に self を、されていない場合に nil を返します。
