Ruby 将函数返回的元组传递给其他函数
考虑两个功能Ruby 将函数返回的元组传递给其他函数,ruby,parameter-passing,Ruby,Parameter Passing,考虑两个功能 def bar() return 1,2 end def foo(a,b) puts %{#{a},#{b}} end 我希望能够使用显式参数(例如foo(3,4))以及bar返回的参数(例如foo(bar))调用foo) 不幸的是,第二次调用产生ArgumentError:“参数数量错误(给定1,预期为2)” 声明foo() 我想定义foo来进行散列: def foo(c) a,b = c['a'],c['b'] puts %{#{a},#{b}} end
def bar()
return 1,2
end
def foo(a,b)
puts %{#{a},#{b}}
end
我希望能够使用显式参数(例如foo(3,4)
)以及bar
返回的参数(例如foo(bar)
)调用foo
)
不幸的是,第二次调用产生ArgumentError:“参数数量错误(给定1,预期为2)”
声明foo()
我想定义foo
来进行散列:
def foo(c)
a,b = c['a'],c['b']
puts %{#{a},#{b}}
end
但这使得使用显式参数相当困难。数组也是如此
Ruby风格的解决方法是什么 您需要显示由bar
返回的两元素数组:foo(*bar)
。这是因为foo
有两个参数,每个参数都是bar
返回的数组元素,而不是该数组的一个参数
回想一下,splat操作符将foo(*[1,2])
转换为foo(1,2)