おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

Enumerable.select { ... }.first って、Enumerable.find(または detect)で書けるらしい

3回調べたらブログに書きましょうシリーズ。過去に同僚から教えていただいたのに、えっとどうだったっけ?とおんなじことを 2回も調べたので、メモします。

内容は下記のまんまです。

前提

下記のような配列があったとして、

prefectures = [
  { code: 1, name: "北海道" },
  { code: 2, name: "青森県" },
  { code: 3, name: "岩手県" },

  # ...

  { code: 45, name: "宮崎県" },
  { code: 46, name: "鹿児島県" },
  { code: 47, name: "沖縄県" },
]

Before

Enumerable.find を知る前は下記のように書いていました

class Prefecture
  def self.find_by_code(code)
    prefectures.select { |prefecture| prefecture['code'] == code }.first
  end
end

After

Enumerable.find を使うと、こう。

class Prefecture
  def self.find_by_code(code)
    prefectures.find { |prefecture| prefecture['code'] == code }
  end
end

おんなじことやるメソッドで Enumerable.detect というのもあります。Enumerable きちんと使えるようになると、ほんと便利すねー。ではでは。

参考サイト