在 Python 中,位置参数始终可以作为关键字参数提供(我们不会深入研究可能为假的 Python-C 扩展):
def foo(bar=None):
print(bar)
foo("aaa")
foo(bar="aaa")
我想达到与bar
Ruby 相同的效果。但是既不工作bar = nil
也不bar: nil
工作:
def foo bar = nil
仅位置,传递的参数foo(key: value)
将被收集到哈希中并作为下一个位置参数提供,而foo(bar = value)
分配给局部变量bar
并按位置传递(而不是匹配参数名称)。def foo bar: nil
仅限关键字。bar
除了形式之外,没有办法提供f(bar: value)
恐怕在 Ruby 中不可能有一个既可以按位置也可以按关键字传递的参数。是吗?
我只需要使用 Ruby 2.5 及更高版本。