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 简短的祝福语12字
18 下雨开工吉祥祝福语简短