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 : 5lambda は、
$ ./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