我正在使用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
?
答案 0 :(得分:4)
您当前的方法签名method1(arg1 = true, arg2, *args)
无效,因为如果您还使用splat可选参数,则具有默认值的参数必须位于必需参数之后。但如果你把它改成:
method1(arg1, arg2 = true, *args)
然后你可以做
self.class.send(:method2, arg1, arg2, *args)