any? メソッドとは
配列の要素が、全て偽の場合、false
を返します。
一つでも真の要素があれば、true
を返すメソッドになります。
例
p [nil, true, 99].any? # => true
p [nil, false, 99].any? # => false
ブロックを使用する
ブロックを伴う場合は、各要素に評価され、全て偽の場合、false
を返します。
評価の時点で真を返した時点で、true
を返します。
p [5, 10].any? {|v| v > 20 } # => false
p [5, 10].any? {|v| v > 6 } # => true
引数を使用する
引数を渡して、処理することもできます。
ブロックと同じで、引数で渡したオブジェクトと各要素が一致するか評価され、全て偽の場合、false
を返します。
評価の時点で真を返した時点で、true
を返します。
p [false, 100].any?(String) # => false
p ['test', 100].any?(String) # => true
正規表現も引数で渡せる
引数で、正規表現も使用することができます。
評価は、上記と変わらないです。
p ['hoge', 'fuga'].any?(/\d/) # => false
p ['hoge', '999'].any?(/\d/) # => true
まとめ
要素を評価して、真偽値を返してくれる、非常に便利なメソッドになります。
おそらくRailsでは、if文などの条件式に使用することが想定されます。
皆さんの参考になれば、幸いです。
最後までご覧いただき、ありがとうございました。
参考文献