Enumerable.select を知らなかった話
こんなソースを何回か書きまして、絶対にもっと簡単な方法があるよなー
と、思ってたらありました
悪い例
def func(array) result = [] array.each do |val| # 何かしらの条件を満たした場合のみ、valを加工して、resultに格納 if … result << 〜 end end result end
良い例
def func(array) array.select do |val| … end.map do |val| 〜 end end
select {|item| ... } 各要素に対してブロックを評価した値が真であった要素を全て含む配列を返します。 真になる要素がひとつもなかった場合は空の配列を返します。
だいぶすっきりした
そんな感じ