Just do IT

思うは招く

Ruby の any? メソッドの動き

Rubyany?とは配列に対して、要素がどれかひとつでも条件に合致したら真を返すメソッド。

すべての要素が偽である場合に 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?メソッドが使える。

Enumerable#all? (Ruby 2.7.0 リファレンスマニュアル)