l1 = lambda{print "l1"}
l1 = lambda{print "l1"}
l1.call # l1
l2 = lambda{|n| print "l#{n}"}
l2.call(2) # l2
l3 = ->{print "l3"} #
l3.call # l3
l4 = ->(n){print "l#{n}"}
l4.call(4) # l4
l5 = ->(){print "l5"}
l5.call # l5
def m(&b)
yield
end
def mn(&b)
yield 123
end
m(&l1) # l1
m(&l3) # l3
m(&l5) # l5
mn(&l2) # l123
mn(&l4) # l123
Ruby 1.9引入的lambda新语法如下:
->(param){expression}
没有参数时,括号可以省略,也可以用空的括号,就像上面的例子中“l5”展示的那样。