0
0

More than 1 year has passed since last update.

selectメソッドとそれに関するメソッドの解説

Posted at

「collectメソッドと同じメソッドを選べ」という問題は頻出なので、この際にまとめようとおもいます

selectメソッド

selectメソッドは、調べたブロックが真であった場合、その要素を返すメソッドです。
真であるものがなかったら、空の配列が返ってきます

(1..10).select {|i| i % 2 == 0 }
=> [2, 4, 6, 8, 10]

[3, 5, 7, 9].select {|i| i % 2 == 0 }
=> []

似てるけど、違うメソッド

rejectメソッド

rejectメソッドは、調べたブロックの中で、偽であった要素を返すメソッドです。
偽であるものがなかったら、空の配列が返ってきます

(1..10).reject { |i| i % 2 == 0 }
=> [1, 3, 5, 7, 9]

[2, 4, 6].reject { |i| i % 2 == 0 }
=> []

grepメソッド

条件に一致した要素を配列で返します。条件に一致した要素がなかった場合、空の配列が返ってきます。
参考資料にも書いてある通り、grepメソッドは正規表現やブロックなども評価できるんです。

["hoge", "bazz", "str"].grep(/[b|h]/)
=> ["hoge", "bazz"]

(1..10).grep 1..3
=> [1, 2, 3]

grep_vメソッド

grepメソッドの逆ですね。

["hoge", "bazz", "str"].grep_v(/[b|h]/)
=> ["str"]

(1..10).grep_v 1..3
=> [4, 5, 6, 7, 8, 9, 10]

detectメソッド

findメソッドと同一のメソッドです。名前の通り、条件に一致した最初の要素を取り出すメソッドです。

(1..10).detect {|i| i % 3 == 0 }
=> 3

(1..10).find {|i| i % 3 == 0 }
=> 3

mapメソッド

要素の数だけブロックの処理を行い、配列で処理を返します
collectメソッドと同じ処理をします

(1..10).map {|i| i % 3 == 0 }
=> [false, false, true, false, false, true, false, false, true, false]

(1..10).collect {|i| i % 3 == 0 }
=> [false, false, true, false, false, true, false, false, true, false]

(1..4).map {|i| i * 2}
=> [2, 4, 6, 8]

(1..4).collect {|i| i * 2}
=> [2, 4, 6, 8]

実際に問題を解いてみましょう

image.png

今回の選択肢でいえば、collectと同じなのは、mapメソッドでしたね。
なので、選択肢➃が正解になります。

rubyは同じ動作をするメソッドでも複数の書き方があるみたいですね。

【参考資料】

0
0
1

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
0
0