2012-04-22 49 views
3

我做的是:如何正确覆盖参数数量未知的方法?

class Foo 
    alias_method :__bar__,:bar 
    def bar(*arg) 
    #do something 
    __bar__(*arg) 
    end 
end 

它是正确的方式做到这一点?

或者最好找出原始方法有多少个必需的,可选的块参数,并写出完全相同数量的参数?

回答

2

的使用slurpy arg的是正确的做法,但你也应该处理任何块参数:

class Foo 
    alias_method :__bar__,:bar 
    def bar(*arg, &block) 
    #do something 
    __bar__(*arg, &block) 
    end 
end 
+0

那好吧。我会用它:) – texasbruce 2012-04-23 02:51:26