[英]How to pass kwargs in ruby function? Based on python example
$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
python 上有一个例子:
def any_func(a, b=2, c = 0, d=None):
return c
print(any_func(25, c=30)) # will print 30
我怎样才能在 ruby 上做同样的事情?
在 ruby 上如何调用“kwargs”? 我想知道它以进行进一步搜索。
我在 ruby 上尝试了以下代码:
#!/usr/bin/env ruby
def any_func(a, b = 2, c = 0, d = nil)
c
end
puts any_func(25, c = 30) # will print 0, 30 is expected
在 Ruby 中,您需要使用类似哈希的语法
def any_func(a, b: 2, c: 0, d: nil)
c
end
any_func(25, c: 30)
def fun(a=1)
只设置一个默认值。 如果你有any_func(25, c = 30)
,这意味着“用两个 arguments, 25 调用any_func
和表达式c = 30
的结果 =3”
Ruby 具有位置 arguments 和关键字 arguments。 与 Python 不同,您不能混合使用它们,但必须使用各自的语法声明它们并在方法调用中相应地提供它们。
def any_func(a, b: 2, c: 0, d: nil)
c
end
puts any_func(25, c: 30)
您可以参考官方语法文档了解更多关于如何使用 arguments 声明和调用方法。
至于您自己使用any_func(25, c = 30)
调用您的any_func
方法的示例,这里发生的是您在调用上下文中创建了局部变量c
,其值为30
。 您还将此值传递给方法的第二个(可选)参数b
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.