|
setup diary | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4.times{|i| print i}
data=open("test.dat","r"){|f| f.read.split(/\n/)}
data.delete_if{|l| l=~/^#/}
data.each{|l| p l}
こんな感じだ。この数日しか使わないであろうプログラムを書き殴っていて、iteratorの中でiteratorを使ってしまった。すると、当然のことながら、この変数が重複することになる。このとき注意しなければいけないのは、iteratorの変数が前もって定義されている場合には、変更されてしまうということである。その結果、予想しない結果になってしまう。そのあたりは、次期バージョンでは仕様が変わって、おそらくエラーが出るようになるようだ。
ちなみに今日知ったのだが、イテレータは古い表現で、最近はブロック付きメソッドというらしい。