如何将数字作为键(键值)传递给** kwargs?换句话说,为什么不能将数字作为键(键值)传递给** kwargs?这是错误:
修改
def func(**kwargs)
puts kwargs.class
p kwargs
end
func(a={:alpha => 1, :beta => 2, :gamma => 3})
# wrong number of arguments (1 for 0) (ArgumentError)
func(n = {1 => 'alpha', 2 => 'beta', 3 => 'gamma'})
在Python中,这可行:
def func(**kwargs):
print(type(kwargs).__name__)
print(kwargs)
func(a={'alpha': 1, 'beta': 2, 'gamma': 3})
func(n = {1: 'alpha', 2: 'beta', 3: 'gamma'})
请帮忙。
答案 0 :(得分:2)
kwargs表示: K ey w ord A rguments
在ruby的情况下,你只能传递一个符号作为关键。 (如果还有其他事情,请纠正我)
所以这样的事情不起作用:
func("a" => "foo")
func(1 => "bar")
func(Object.new => "baz")
这些都会创建一个哈希并将其作为第一个位置参数传递给函数。但是你的方法没有任何位置参数。因此错误。
您只能使用:
func(a: "this")
func(whatever: Object.new)