筑波大学の問題もうすぐ終わりの44、45番。
[Ruby-44]
io = open("foo.txt", "r")
while line = io.gets
print(line)
end
io.close
これは分かりやすい。while trueなんていらんかったんや。
[Ruby-45]
open("foo.txt", "r"){|io|
while line = io.gets
print(line)
end
}
io.close
こちらはio.closeがいらないことにびっくりした。いったいどうなってるんだ、と『たのしいRuby』p.295を見ると、
openメソッドにブロックを渡せばcloseメソッドを省略することもできます。
だって。理屈はわからないけどすごいなあ。