如何在ruby函数中传递kwargs?基于python examp

2024-04-18 10:00:58 发布

您现在位置:Python中文网/ 问答频道 /正文

环境:

$ 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

Tags: gnunonereturn环境versionlinuxdefany
2条回答

在Ruby中,需要使用类似hash的语法

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),它的意思是“用两个参数调用any_func,25和表达式的结果c = 30(即30)”

Read more

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方法的例子,这里发生的是您在调用上下文中创建了值为30的局部变量c。还将此值传递给方法的第二个(可选)参数b。你知道吗

相关问题 更多 >