(マジで)ゼロから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){|ブロックパラメータ|処理}
とりあえず、今の私には、書き方を換える事によって、
何がどう影響してくるかが分かる段階ではないので、
とりあえず、ブロック使った方が色々便利という程度に覚えておこう。