他力本願メソッドによるRubyの習得、およびRuby 1.8と1.9のProc.newとprocとlambdaとブロックの動作について
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070614#p02
おお、これは(私にとっては)Rubyの習得にピッタリでナイスです!(笑)
教えて君モードその1:Proc.newとprocとlambdaは(マニュアルには同じと書いてありますが)return文の振る舞いが違うみたいですが(かつ、procはRuby 1.8と1.9でも違うみたいですが)、何で違うんでしょうか。(ruby-1.8.6/eval.cを見るとわざと変えているようですが、ソースコード以外のドキュメントは存在しない?) あと、return(と引数のチェック)以外はまったく等価なのでしょうか。
教えて君モードその2:recvの定義を
def recv(y) f = Proc.new{|x| yield x} ...
みたくすれば、ブロックのおかげでrecvの構文が
recv(y){|x| p x}
みたく単純になったりしないのでしょうか。何か違いがあって、動作が変化してしまう?(追記:ITproの記事に書いた例は動作するみたいです。)(追記2:def recv(y,&f)と書くだけで良かったらしい。)