繁体   English   中英

如何在 ruby function 中传递 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) ,这意味着“用两个 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM