1
0

Ruby: any?メソッドについて

Last updated at Posted at 2024-07-18

補足 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モジュールという便利な仕組みがあることを知れた
  • メソッドの使い時を知れた気がする

参考

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0