如何传递传入另一个方法的参数?

时间:2013-01-10 08:14:44

标签: ruby methods parameters arguments parameter-passing

我正在使用Ruby on Rails 3.2.9和Ruby 1.9.3。我正在尝试实现一个运行send方法的方法,我想传递给传递给underling方法的“发送”方法所有参数。也就是说,给定

def method1(arg1, arg2 = true, *args)
  # ...
  self.class.send(:method2, # passing all arguments passed to method1, whatever those are)
end

然后我想将传递给method1(在本例中为arg1, arg2 = true, *args)的所有参数传递给method2

我应该如何 ?例如,是否可以将Ruby“splat”功能与send

一起使用

1 个答案:

答案 0 :(得分:4)

您当前的方法签名method1(arg1 = true, arg2, *args)无效,因为如果您还使用splat可选参数,则具有默认值的参数必须位于必需参数之后。但如果你把它改成:

method1(arg1, arg2 = true, *args)

然后你可以做

self.class.send(:method2, arg1, arg2, *args)