|
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の変数が前もって定義されている場合には、変更されてしまうということである。その結果、予想しない結果になってしまう。そのあたりは、次期バージョンでは仕様が変わって、おそらくエラーが出るようになるようだ。 ちなみに今日知ったのだが、イテレータは古い表現で、最近はブロック付きメソッドというらしい。