Yur*_*nov 0 ruby python keyword-argument
$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
Run Code Online (Sandbox Code Playgroud)
python 上有一个例子:
def any_func(a, b=2, c = 0, d=None):
return c
print(any_func(25, c=30)) # will print 30
Run Code Online (Sandbox Code Playgroud)
我怎样才能在红宝石上做同样的事情?
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
Run Code Online (Sandbox Code Playgroud)
在 Ruby 中,您需要使用类似哈希的语法
def any_func(a, b: 2, c: 0, d: nil)
c
end
any_func(25, c: 30)
Run Code Online (Sandbox Code Playgroud)
def fun(a=1)仅设置默认值。如果有any_func(25, c = 30),则意味着“使用any_func两个参数进行调用,25 和表达式结果c = 30(即 30)”
Ruby 有位置参数和关键字参数。与 Python 不同的是,您不能混合使用它们,而必须使用各自的语法来声明它们,并在方法调用中相应地提供它们。
def any_func(a, b: 2, c: 0, d: nil)
c
end
puts any_func(25, c: 30)
Run Code Online (Sandbox Code Playgroud)
您可以参考官方语法文档来了解如何使用参数声明和调用方法。
至于您自己使用 调用any_func方法的示例any_func(25, c = 30),这里发生的情况是您c在调用上下文中使用 value创建了局部变量30。您还将此值传递给b方法的第二个(可选)参数。
| 归档时间: |
|
| 查看次数: |
5733 次 |
| 最近记录: |