(マジで)ゼロからRubyする編  〜ブロックってなんだ?〜

前回、日付を記録する為に、'date'ライブラリを使ったわけだけど、
その時に、記録をする為のファイルに書き込みをする際に、File.openを使いました。
(これしか知らなかったからだけど)

file=File.open "twit_log.txt","a" 
puts "="*80
puts "#{y.to_s}/#{m.to_s}/#{d.to_s}";
file.close

fileは開いたら、必ずcloseしなくてはならない。
でも、間に色々書いてたら閉じる事を忘れちゃったりする。
この閉じ忘れを回避する為に「ブロック付きopen」というものが便利らしい。

というわけで「Karnel#open」の「ブロック付きopen」で書き直してみる。

open "twit_log.txt","a" do |f|
f.puts "="*80
f.puts "#{y.to_s}/#{m.to_s}/#{d.to_s}";
end

あまりかわらない気が...とか思ったんだけど、File.openの場合だと、
閉じ忘れたら、fileは開きっぱなしになってしまうけど、
ブロック付きにすると、必ず閉じられるらしい。


よくわからんけどvbaの「Do While 〜Loop」的な感じで、「do 〜end」なのかと勝手に思ってたんだけど、
これってブロックだったのね(´・ω・`)
よくわからないまま使ってたけど、「each do」とかもそうらしい。


§ブロック付きメソッド呼び出し

レシーバ.メソッド名(引数,xxx)do |ブロックパラメータ|処理 end
もしくは
レシーバ.メソッド名(引数,xxx){|ブロックパラメータ|処理}


とりあえず、今の私には、書き方を換える事によって、
何がどう影響してくるかが分かる段階ではないので、
とりあえず、ブロック使った方が色々便利という程度に覚えておこう。