我有兩個類,我想將所有方法從一個類複製到另一個類。有些方法不會有參數,有些會有參數,有些會有散列作爲參數。而且我從來不知道哪些人會。所以我創建了這個代碼,直到我發現它沒有考慮到參數。有沒有辦法從一個Class中獲取方法列表,然後將它們完全克隆到另一個類中?將所有方法從一個類複製到另一個類
def partial(cls)
cls.instance_methods(false).each do |method_name|
define_method(method_name) do
cls.new.method(method_name.to_sym).call
end
end
end
的方法是在第一類使用define_method動態創建的,所以我不能只用一個包含。上面的代碼已經傳入了cls,然後它會找到所有實際寫入該類的實例方法,而不是它繼承的實例方法,然後創建一個具有相同名稱的新方法。當這個方法被調用時,它實際上用同名的方法調用另一個類。這很有用,除非我有參數。我有條件檢查,看它是否有參數,然後讓它調用一個帶參數的方法,但它沒有很好地處理哈希。它將散列作爲一個參數的數組,這不是我想要的。
我在想,如果有一個簡單的方法來從字面上說,「嘿,你知道這個方法,不管它是什麼,硬是讓同樣的事情,這個其他類。」
我很困惑你想做什麼。你正在討論實例方法,但是你會說'用同名的方法調用另一個類。除非你跟蹤其他班級的情況,否則這是行不通的。 – AShelly 2012-03-19 18:45:17