- うっかり混同しそうになっていたので
- 参考
- Enumerable モジュール
- メモ
— 環境
— select
— find - 以上
— select は
— find
うっかり混同しそうになっていたので
忘れないうちにメモっておきたいと思います。
参考
有難うございます。
Enumerable モジュール
上記サイトを言葉を引用させて頂くと、
Enumerableモジュールは、配列やハッシュなど集合を表すクラスに数え上げや検索などのメソッドを提供します。
find や select は Enumerable モジュールにより提供されているとのことです。
メモ
環境
ubuntu@ubuntu-xenial:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS" ubuntu@ubuntu-xenial:~$ ruby --version ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
select
以下のように 2 で割り切れる要素全てを配列で返す。つまり、{ } ブロックが true となる要素全てを配列で返すのが select ということでしょうか。
irb(main):001:0> [1, 2, 3, 4, 5, 6].select { |n| n % 2 == 0 } => [2, 4, 6]
ちなみに select と同じ機能を提供するが find_all で、以下のように同じ結果が得られます。
irb(main):003:0> [1, 2, 3, 4, 5, 6].find_all { |n| n % 2 == 0 } => [2, 4, 6]
find
以下のように 2 で割り切れる要素の最初の要素を返す。select に対して { } ブロックが true となる最初の要素を返すのがfindということでしょうか。
irb(main):002:0> [1, 2, 3, 4, 5, 6].find { |n| n % 2 == 0 } => 2
find と同じ機能を提供するのが detect で、以下のように同じ結果が得られます。
irb(main):004:0> [1, 2, 3, 4, 5, 6].detect { |n| n % 2 == 0 } => 2
以上
select は
- ブロックが true となる要素全部を配列で返します
- find_all という別名があります
find
- ブロックが true となる最初の要素を返します
- detect という別名があります