lambda 式 コミット
ということで、早速試したんですが、(snapshot です。CVS は環境が許さないので)
$ ./ruby -ve ' h = { "a" => "A", "b" => nil, "c" => "C" } h.each ->(k, v="none") { puts "#{k} : #{v}" } ' ruby 1.9.0 (2005-07-27) [i686-linux] a : A b : c : C
あわわゎわゎ…。もしかして 上の例 と の例、思いっきし間違ってます?
間違ってたら急いで直しますので、コメントよろしくお願いします。>誰かー
追記:
コメントありがとうございます。"none" は使われないので、やっぱり例が良くないですね。
block は、
$ ./ruby -ve ' def m; yield 1, 2; end m ->(x, y, z=4|1) { puts "#{x} : #{y} : #{z}" }' ruby 1.9.0 (2005-07-27) [i686-linux] 1 : 2 : 5
lambda は、
$ ./ruby -ve ' f = ->(x, y, z=4|1) { puts "#{x} : #{y} : #{z}" } f.call(1,2) ' ruby 1.9.0 (2005-07-27) [i686-linux] 1 : 2 : 5
にするとちょっとマシかな〜?うーむ。
もっと良い案ないでしょうか>誰か (とまた助けを呼ぶ)
追記 2:
なかださんコメントありがとうございます。
$ ./ruby -ve ' [["a", "A"], ["b"], ["c", "C"]].each ->(k, v="none") { puts "#{k} : #{v}" }' ruby 1.9.0 (2005-07-27) [i386-cygwin] a : A b : none c : C
確かに。
サンプルの変数名を hash としたのはイケてませんね。といいつつ
hash = [["a", "A"], ["b"], ["c", "C"]]
と言い張る。orz