Ruby:lambda 函数参数可以有默认值吗?
我想做类似的事情:
def creator()
return lambda { |arg1, arg2 = nil|
puts arg1
if(arg2 != nil)
puts arg2
end
}
end
test = creator()
test('lol')
test('lol', 'rofl')
我收到一些语法错误:
test.rb:2: syntax error
return lambda { |arg1, arg2 = nil|
^
test.rb:3: syntax error
test.rb:7: syntax error
test.rb:14: syntax error
is this possible in ruby?我想为 lambda 函数的参数设置默认值
I want to do something similar to this:
def creator()
return lambda { |arg1, arg2 = nil|
puts arg1
if(arg2 != nil)
puts arg2
end
}
end
test = creator()
test('lol')
test('lol', 'rofl')
I get a few syntax errors:
test.rb:2: syntax error
return lambda { |arg1, arg2 = nil|
^
test.rb:3: syntax error
test.rb:7: syntax error
test.rb:14: syntax error
is this possible in ruby? i want to set a default value for a parameter to a lambda function
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Ruby 1.9+ 中,您可以使用旧式 lambda 或新的“箭头”lambda 语法来设置默认参数:
In Ruby 1.9+, you can use either of the old-style lambdas or the new "arrow" lambda syntax to set a default parameter:
在 Ruby 1.8.x 中,您可以按照以下方式伪造它:
编辑: 上面的示例将第二个参数默认为
nil
,但如果您希望有另一个默认值您可以根据args.size
分配arg2
(例如,arg2 = mydefault if args.size <2
)。同样,如果您有两个以上的参数,则未指定的参数将默认为 nil,除非您自己分配它们。对于 Ruby 1.9+,请参阅其他答案。
In Ruby 1.8.x you can sort of fake it along the lines of:
Edit: The above example defaults the second argument to
nil
, but if you wish to have another default you can assignarg2
based onargs.size
(e.g.arg2 = mydefault if args.size < 2
). Similarly if you have more than two arguments the unspecified ones will default tonil
unless you assign them yourself.For Ruby 1.9+ see other answers.