3回調べたらブログに書きましょうシリーズ。過去に同僚から教えていただいたのに、えっとどうだったっけ?とおんなじことを 2回も調べたので、メモします。
内容は下記のまんまです。
- module Enumerable
- http://docs.ruby-lang.org/ja/2.1.0/class/Enumerable.html#I_DETECT
前提
下記のような配列があったとして、
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 きちんと使えるようになると、ほんと便利すねー。ではでは。