2013-03-21 107 views
0

是否有最佳做法emptify Ruby中的方法?替換空方法

I.e.在子類中,如果我要重寫的方法有什麼,有沒有另一種語法比這

class A 
    def XX 
    [..do something..] 
    end 
end 

class B < A 
    def XX 
    # Do Nothing 
    end 
end 

我想知道如果有一個關鍵詞中......

class B < A 
    void_method :XX 
end 

。因爲它更清晰的代碼維護。

回答

4

沒有,它實際上會更擊鍵比

def XX; end 

但是你可以很容易地添加這樣一個方法

class A 
    def self.void_method name 
    define_method(name) {} 
    end 
end 

還是很明顯,你可以添加這個,如果你是反對將在更多地方使用它。

1

從你的問題中不清楚你想要什麼。如果你希望它返回任何方法錯誤,那麼這樣做:如果你希望它返回接收器

class B < A 
    def XX *args, &pr; end 
end 

,則:

class B < A 
    undef_method :XX 
end 

如果你希望它返回nil,那麼這樣做這樣做:

class B < A 
    def XX *args, &pr; self end 
end