【发布时间】:2020-05-30 09:14:39
【问题描述】:
在 Python 中,位置参数始终可以作为关键字参数提供(我们不会深入研究可能为假的 Python-C 扩展):
def foo(bar=None):
print(bar)
foo("aaa")
foo(bar="aaa")
我想在 Ruby 中实现与bar 相同的效果。但是bar = nil 和bar: nil 都不起作用:
-
def foo bar = nil仅是位置参数,作为foo(key: value)传递的参数将被收集到一个哈希中并作为下一个位置参数提供,而foo(bar = value)则分配给局部变量bar并按位置传递它(而不是匹配参数名称)。 -
def foo bar: nil仅限关键字。除了f(bar: value)的形式外,没有办法提供bar
恐怕在 Ruby 中不可能有一个既可以按位置传递也可以按关键字传递的参数。是吗?
我只需要使用 Ruby 2.5 及更高版本。
【问题讨论】:
-
我强烈推荐阅读这个答案:stackoverflow.com/a/53955936/1596460
标签: ruby arguments keyword-argument positional-parameter