RubyLambdas
示例
#使用箭头语法的lambda
hello_world = -> { 'Hello World!' }
hello_world[]
#'你好,世界!'
#使用箭头语法的lambda accepting 1 argument
hello_world = ->(name) { "Hello #{name}!" }
hello_world['Sven']
# "你好,斯文!"
the_thing = lambda do |magic, ohai, dere|
puts "magic! #{magic}"
puts "ohai #{dere}"
puts "#{ohai} means hello"
end
the_thing.call(1, 2, 3)
#魔法!1
#奥海3
#2表示你好
the_thing.call(1, 2)
#ArgumentError:参数数量错误(2个代表3个)
the_thing[1, 2, 3, 4]
#ArgumentError:参数数量错误(4个代表3个)您还可以->用来创建和.()调用lambda
the_thing = ->(magic, ohai, dere) {
puts "magic! #{magic}"
puts "ohai #{dere}"
puts "#{ohai} means hello"
}
the_thing.(1, 2, 3)
# => magic! 1
# => ohai 3
# => 2 means hello在这里,您可以看到lambda与proc几乎相同。但是,有一些警告:
强制执行lambda的论点;将错误数量的参数传递给lambda会引发ArgumentError。它们仍然可以具有默认参数,splat参数等。
return从lambda内部返回的结果是从lambda返回的,而return从proc返回的结果是在封闭范围之外的:
deftry_proc
x=Proc.new{
return#从try_proc返回
}
x.call
puts"Afterx.call"#这条线永远不会到达
end
deftry_lambda
y=->{
return#从y返回
}
y.call
puts"Aftery.call"#此行不跳过
end
try_proc#无输出
try_lambda#Outputs"Aftery.call"
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短