【问题标题】:Passing tuple returned by function to other function将函数返回的元组传递给其他函数
【发布时间】:2020-02-14 08:48:45
【问题描述】:

考虑两个函数

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() 获取一个元组 (def foo(c); a,b = c; puts %{#{a},#{b}}; end) 也不起作用,因为这样第一个调用参数会引发 ArgumentError。

我想定义foo 来获取哈希:

def foo(c)
  a,b = c['a'],c['b']
  puts %{#{a},#{b}}
end

但这使得使用显式参数相当不方便。与数组相同。

解决这个问题的 Ruby 式方法是什么?

【问题讨论】:

    标签: ruby parameter-passing


    【解决方案1】:

    你需要将bar返回的二元素数组分解成:foo(*bar)。那是因为foo 有两个参数,每个参数都是bar 返回的数组的元素,而不是那个数组的一个参数。

    回想一下,splat 运算符将foo(*[1,2]) 转换为foo(1,2)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多