如何包装一个采用可变长度参数的方法?

时间:2014-03-02 06:11:00

标签: ruby

假设有一个名为foo的方法,它采用可变长度的参数。

def foo(*args)
  # Implementation omitted
end

我想用bar包装方法。

def bar(*args)
# Will call `foo` at some point
# `foo(args)` isn't satisfactory.
end

如何在foo内拨打bar,这样如果我使用bar致电bar(1,2,3),又会调用foo(1,2,3)

一些限制因素是:

  1. 我无法更改foo的代码。
  2. foobar应具有完全相同的签名。
  3. 当然,我可以在foo(args)bar进行操作。但如果是这种情况,对foo来说,它将收到的是数组数组而不是数组。

    感谢。

1 个答案:

答案 0 :(得分:2)

使用splat运算符(*)作为Blender评论:它将数组转换为参数。

def bar(*args)
  foo(*args)
end