Ruby 具有命名参数的函数如何改为使用哈希调用?
How can Ruby functions with named arguments get called with a hash instead?
我试图让这个 foo 函数输出 "first" 然后 "second" 但它输出的是 {:x=>"first", :y=>"second"} 和 "this is y".
如何使用散列作为命名参数?
def foo(x='hi', y='this is y')
puts x
puts y
end
hash = {x: 'first', y: 'second'}
foo(**hash)
只需使用散列调用方法:foo(hash)
更大的问题:您没有使用命名参数(或更好的关键字参数),而是使用具有默认值的参数。要使用命名参数,您不能不使用 =
而是 :
.
def foo(x: 'hi', y:'this is y')
puts x
puts y
end
hash = {x: 'first', y: 'second'}
foo(hash)
我试图让这个 foo 函数输出 "first" 然后 "second" 但它输出的是 {:x=>"first", :y=>"second"} 和 "this is y".
如何使用散列作为命名参数?
def foo(x='hi', y='this is y')
puts x
puts y
end
hash = {x: 'first', y: 'second'}
foo(**hash)
只需使用散列调用方法:foo(hash)
更大的问题:您没有使用命名参数(或更好的关键字参数),而是使用具有默认值的参数。要使用命名参数,您不能不使用 =
而是 :
.
def foo(x: 'hi', y:'this is y')
puts x
puts y
end
hash = {x: 'first', y: 'second'}
foo(hash)