|
setup diary |
rubyを用いてファイルからデータ読み込んで処理することがしばしばある。データを読んで、行毎に分けて、その後の処理をするという感じである。その際には、これまでは
open("filename","r"){|f|f.read}.split(/\n/).method
というような書き方をすることが多かった。単純にopenで開けると、閉じる作業をするべきである。フロックで処理すれば、自動的に閉じてくれるので、ブロックを使うようにしている。しかし、readとかsplitとかが面倒なと感じていた。よくよく考えると、IOはEnumerableなので、適切なmethodを使えば、もっとすっきりと書くことができることに気がついた。例えば、
open("filename","r"){|f|[*f]} open("filename","r"){|f|f.to_a} open("filename","r"){|f|f.map} open("filename","r"){|f|f.grep(reg)}
などを使うと、返すobjectは違うが、ほぼ同等のことができる。今後は、こんな感じで書くように心がけよう。