Rubyのany?
とは配列に対して、要素がどれかひとつでも条件に合致したら真を返すメソッド。
すべての要素が偽である場合に false を返します。真である要素があれば、ただちに true を返します。 ブロックを伴う場合は、各要素に対してブロックを評価し、すべての結果が偽である場合に false を返します。ブロックが真を返した時点で、ただちに true を返します。
Enumerable#any? (Ruby 2.7.0 リファレンスマニュアル)
コード例
ブロック引数を渡す場合。配列の要素をひとつずつ比較している。
#4以上の数値は存在しないのでfalse > [1,2,3].any? { |num| num > 4 } => false #1以上の数値が存在するのでtrue > [1,2,3].any? { |num| num > 1 } => true
ブロック引数を書かない場合、配列の要素に真の値があればtrueを返す。
#数値はtrueなのでtrueが返る > [1,2,3].any? => true #trueがあるのでtrueが返る > [nil, true].any? => true #すべてnilなのでfalseが返る > [nil, nil].any? => false
最後の[nil, nil].any?
は、すべての要素が偽なので false が返る。
なお、「すべての要素が真である場合に true を返したい」ときは、all?
メソッドが使える。