Ruby ベストプラクティスのメモ書き

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

知らんことがいくつかあった。ゼミナールのとき用の実験補助スクリプトでRubyをガシガシ書いていたが、最近技術系のことを追ってなかったのでなんか新鮮な感じがした。

テキスト処理とファイル管理

File.foreach

Enumeratorを返すので、ブロックが使える。

enum = File.foreach("hoge.txt")
sum = enum.inject(0) {|s, r| s + r }
行数をトラッキング

File.linenoメソッドというのが使える。例になっていた「奇数行がkey、偶数行がvalueになっているファイルをHashに」という例が簡潔でおー、という感じだったのでメモ。

keys = []
values = []

File.open("hoge.txt") do |file|
  file.each{|line|
    (file.lineno.odd? ? keys : values) << line.chomp
  }
end

Hash[*keys.zip(values).flatten]

最後の行のイディオムっぽいやつはいつまでたっても覚えてない。