メタプログラミングRuby 第3章 水曜日:ブロック その3

今日も時間に余裕がなくて電車のなかで Proc と lambda の違いと、Method/UnbondMethod オブジェクトのところだけ読みました。

lambda, Proc, Method などの微妙な差異についてはこんなまとめもあるのでここで書かなくてもよいでしょう。

http://d.hatena.ne.jp/shunsuk/20090101/1230816826

今日は特におやっ、と思ったところだけメモします。

  • proc{} で書いた Proc オブジェクトは lambda になるか?
    • 1.9 では Proc(lambda じゃない)
    • 1.8 では lambda と同等だった
    • ええー、知りませんでした。わたしはもうだいぶ前に 1.8 は捨ててしまったので。これはたしかにややこしい……。proc は、元々使ってませんでしたが、使わないようにします。
  • Rubyist の多くは、Proc の機能が必要でない限り、lambda を選ぶようだ」
    • えっ?
    • 確かに最近は lambda で書くことが多くなった気もする。微妙に短いので。