覆寫從父類繼承的依賴 gem 類
如果我使用blahgem,并且這個 gem 有一個foo繼承自bar. 但是我想在這個 gem 上更改這個類。有沒有辦法做到這一點,我已經看到了覆寫 gems 類上的方法但不覆寫實際類的方法。
例如。
我要覆寫的類如下:
class foo < bar
def some_method
end
def another_method
end
end
我想如何覆寫這個類:
class foo < not_bar
def a_different_some_method
end
def a_different_another_method
end
end
uj5u.com熱心網友回復:
不,如果不基本上重寫子類,您實際上無法更改父類。如果每個類中只有兩個方法可能沒問題,但 Ruby 類使用單繼承,因此您不能在不重新定義的情況下將子類重新分配給不同的超類。但是,您可以執行以下任一操作:
- 重新打開類并重新定義其方法。
- 預先添加一個模塊以重新定義現有方法的行為。
- 添加或修改單例類或該類的單例實體的方法。
- 如果您的類是從Delegator繼承的,您可以使用#__setobj__更改委托類。
由于您還沒有真正定義用例,因此很難判斷哪種方法最適合您。但是,一旦定義了父類,它就會保持定義狀態,因此您必須以另一種方式嘗試做任何事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/331845.html
