【Rubyメモ】detectについて理解する!こつこつ学んでいこう!

IT/プログラミング

2021年2月28日に書いた記事でございます~

detectについて理解していきましょう!

さてさてやっていきましょう!

detectの英語の意味を調べた

detect:見つける、気付く、検波する

という意味らしいです。

つまり、detectメソッドを使うと
何かを見つけたり、気付いたりすることが
できそうです!

detectを使ってみた

array_numbers = [1, 2, 3, 4, 5]
p array_numbers.detect{|number| number % 2 == 0}
p array_numbers

array_words = ["あ","い","う"]
p array_words.detect{|word| word == "う"}
p array_words.detect{|word| word === "い"}
p array_words

実行結果
2
[1, 2, 3, 4, 5]
"う"
"い"
["あ", "い", "う"]

最初に数字の配列を用意しました。

そしてdetectメソッドを使い、2で割り、余りが0の物を探した結果、

integer型の2が返ってきました。
そのあとにarray_numbersを確認すると、値はもとのままです。

非破壊的メソッドですね!


integer型の4の値は取ってきませんでした。
このメソッドは最初に気付いた要素のみを取ってくるようです。

次に文字の配列を用意しました。
そして「う」を探したり、「い」を探しても
戻ってくるのはString型でした!


配列ではなく、要素の型を返してくるわけですね!

まったく同じ動作をするメソッドを紹介

findでーす!

array_numbers = [1, 2, 3, 4, 5]
p array_numbers.find{|number| number % 2 == 0}
p array_numbers

array_words = ["あ","い","う"]
p array_words.find{|word| word == "う"}
p array_words.find{|word| word === "い"}
p array_words

実行結果
2
[1, 2, 3, 4, 5]
"う"
"い"
["あ", "い", "う"]

はい、同じですね。

もし資格の試験などで

detectと同じ働きをするメソッドは?
と、聞かれたら、findと元気よく答えましょう!

detect!で実行してみた

array_numbers = [1, 2, 3, 4, 5]
p array_numbers.detect!{|number| number % 2 == 0}
p array_numbers

実行結果
undefined method `detect!' for [1, 2, 3, 4, 5]:Array (NoMethodError)
Did you mean?  detect

はい、「!」をつけて「detect!」を実行すると、

「”detect!” なにそれ?そんなメソッドないよ! detectのこと?」
と言われました~優しい親切。

まとめ

  • detectは英語で「見つける、気づく」という意味!
  • 非破壊メソッド!「!」を付けたらノーメソッドエラー!
  • 複数の該当要素のうち、最初の要素の値を取ってくる!
  • findメソッドと同じ働きをする!

以上、detectを理解しよう!でした!

RubySilverに挑戦した

Ruby Silverに挑戦したお話はこちらからどうぞ

タイトルとURLをコピーしました