読者です 読者をやめる 読者になる 読者になる

hotoolong's blog

Railsやvimや気になったことを綴ってます

Enumerable#detect

ruby

Arrayなどで配列を扱ってると、配列の中の一致する値を取り出したい場合があります。
下のコードを書いてコミットしたら、指摘されていいものを教えてもらったので、メモです。

array.each do |data|
  if data.to_i == 1
    return data
  end
end
nil

のように書いてチェックしてなかったらnilにするような処理を一括でやってくれるのがdetectです。
便利です。

array.detect do |data|
  data.to_i == 1
end

かなりシンプルになりました。
detectのいいところはブロックで受け取った評価に一致するデータを返却してくれて、一致するデータがなかった場合は、nilを返してくれます。
便利さに浸ってました。

Ruby Reference Manual