each do と Enumerator
最近のRuby マイブームはEnumerator なので、each do を使って書いていた処理はmap やinject を使って書く様にしています。
例えば、CSV ファイルを読み込んで、カンマでバラして二次元配列にするプログラムだとこんな感じ。
これが…
# 以前の書き方 File.open('hoge.csv') do |file| records = Array.new file.read_line do |line| records.push(line.chomp.split(',')) end end
今だとこうです。
# 最近の書き方 File.open('hoge.csv').map{ |line| line.chomp.split(',') }.to_a
すんごいシンプルに書けるのが見て取れると思います。
メソッドチェーンは読みづらいという人もいますが、適切に改行入れてやれば可読性も充分に保たれるんでないかなと。
# 最近の書き方(改行入れてみた版) File.open('hoge.csv').map{ |line| line.chomp.split(',') }.to_a
ただ、難点が1つありまして。
過去の自分のコードを全部直したくなるんですよね。
まあ、プログラマあるある話でした。