如何在 ruby 函数中传递 kwargs?基于 python 示例
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)
,则表示 "call any_func
with two arguments, 25 and result of expression c = 30
(that is 30)"
Ruby 有位置参数和关键字参数。与 Python 不同,您不能混合使用它们,而必须使用各自的语法声明它们,并在方法调用中相应地提供它们。
def any_func(a, b: 2, c: 0, d: nil)
c
end
puts any_func(25, c: 30)
您可以参考 official syntax documentation 了解更多关于如何声明和调用带参数的方法。
至于您自己使用 any_func(25, c = 30)
调用 any_func
方法的示例,这里发生的是您在调用上下文中创建了值为 c
的局部变量 c
=14=]。您还将此值传递给方法的第二个(可选)参数 b
。
环境:
$ 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)
,则表示 "call any_func
with two arguments, 25 and result of expression c = 30
(that is 30)"
Ruby 有位置参数和关键字参数。与 Python 不同,您不能混合使用它们,而必须使用各自的语法声明它们,并在方法调用中相应地提供它们。
def any_func(a, b: 2, c: 0, d: nil)
c
end
puts any_func(25, c: 30)
您可以参考 official syntax documentation 了解更多关于如何声明和调用带参数的方法。
至于您自己使用 any_func(25, c = 30)
调用 any_func
方法的示例,这里发生的是您在调用上下文中创建了值为 c
的局部变量 c
=14=]。您还将此值传递给方法的第二个(可选)参数 b
。