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)