日刊 あおのうま Vol.2379(2017.10.06)【もう以前には戻れない戻りたくない】

投稿者: | 2017/10/06

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つありまして。
過去の自分のコードを全部直したくなるんですよね。

まあ、プログラマあるある話でした。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください