補足 2024 07/19
@scivolaさんよりご指摘いただいた内容を反映
読んで欲しい人
- any?メソッドがわからん人
- 過去の俺
動作環境
- ruby 3.3.0
any?メソッドとは
- 配列やハッシュなどのコレクションに対して使用する
要素内に1つでもtrueを見つければtrueを返す。全ての要素がfalseならfalseを返す- 1 つでも真な要素があれば true を返す。全ての要素が偽なら false を返す
[nil, false, nil, false, true].any?
=> true
- ブロックで条件を指定できる
[1, 2, 3].any? { |v| v > 3 }
=> false
追記: 2024/07/19
- 全ての要素が偽というのは、要素がない場合にも成り立つ
[].any?
=> false
なんで配列、ハッシュの要素1つ1つをチェックできるのか?
any?
はEnumerableモジュールが提供しているメソッドの1つだから
Enumerableモジュールとは
コレクションに対して繰り返し操作を行うためのメソッドを集めたモジュール
このEnumerableモジュールを読み込ませる(include)させることで、通常は繰り返し操作ができないようなクラスでも、繰り返し操作を行えるようになります。
Enumerableモジュールが提供している他のメソッド
each- select
- map
- find
- count
などなど
追記: 2024/07/19
Enumerableモジュールはeachメソッドを提供していません。
eachメソッドを利用して上記のメソッドを定義しているというのが正しいです。
any?の注意点
指定したコレクションの全ての要素を確認するわけではない
- any?は見つけた最初の要素がtrueなのかfalseなのかを判断するメソッドである
戻り値はtrueかfalseであり、最初に見つけた要素ではない
- 私は間違えて、trueの最初の要素が戻ると勘違いしてました。
感想、学び
- Enumerableモジュールという便利な仕組みがあることを知れた
- メソッドの使い時を知れた気がする
参考