0
A
回答
1
你不應該這樣做。你應該分享你正在解決的問題,找到解決問題的更好的模式。
的有點不同解決這個問題的一個例子:
class A
def x; end
end
module Foo
def y; end
end
instance_with_y = A.new
instance_with_y.send :include, Foo
instance_with_y.respond_to? :y #=> true
1
這是可能做到你想要紅寶石什麼,紅寶石可以是這樣的可塑性很大,但也有很多更好的方法。你想達到什麼似乎是一個非常糟糕的主意。
剛剛描述的問題繼承的問題旨在解決。所以真的,你有兩個班。類別A
以及繼承自類別A
的類別B
。
class A
def foo
'foo'
end
end
# B inherits all functionality from A, plus adds it's own
class B < A
def bar
'bar'
end
end
# an instance of A only has the method "foo"
a = A.new
a.foo #=> 'foo'
a.bar #=> NoMethodError undefined method `bar' for #<A:0x007fdf549dee88>
# an instance of B has the methods "foo" and "bar"
b = B.new
b.foo #=> 'foo'
b.bar #=> 'bar'
1
這是解決問題的一種方法:
class X
def a
11
end
def b
12
end
end
ob1 = X.new
ob1.b # => 12
ob1.singleton_class.class_eval { undef b }
ob1.b
# undefined method `b' for #<X:0x9966e60> (NoMethodError)
,或者你可以爲寫(上面和下面都是一樣的):
class << ob1
undef b
end
ob1.b
# undefined method `b' for #<X:0x93a3b54> (NoMethodError)
相關問題
- 1. 類方法中的Ruby實例引用?
- 2. 在Ruby中創建一個沒有實例方法的類
- 3. 如何用不同的方法創建一個類的實例?
- 4. 如何用不同的方法創建類的實例
- 5. 從onCreate創建類方法的實例
- 6. 如何從創建的類中使用創建類的方法?
- 7. 如何在Prime類中創建Ruby中的默認實例?
- 8. 如何在創建新實例時使用基類中的Copy方法
- 9. 如何使用在Java中創建實例的參數創建方法?
- 10. 在類內部創建類的實例
- 11. 如何使用符號創建一個類似的Ruby方法?
- 12. 在創建類的實例的類中定義方法
- 13. Python的 - 超類方法中創建類的實例
- 14. AS3 - 如何使用子類,如何創建子類的實例?
- 15. 實例方法中的內部類
- 16. 如何從靜態方法創建類的實例?
- 17. 在javascript中調用實例創建回調的實例方法
- 18. 如何在類中爲所有setter方法創建新實例?
- 19. 從創建的實例調用方法
- 20. 如何在該類方法內創建類實例?
- 21. ExecutorService - 在方法中創建新實例vs每個類創建一個實例
- 22. 如何在實例類中的實例上調用方法?
- 23. 如何使用通用類型創建類的實例
- 24. 如何從該類的實例創建類的實例?
- 25. 如何從超類的實例創建子類的實例?
- 26. 如何從哈希數組創建ruby類的實例?
- 27. 如何使用元編程爲ruby中的類的所有實例創建實例變量?
- 28. 無法在接口方法中創建抽象類的實例
- 29. 來自實例方法的Ruby調用類方法
- 30. 從Ruby的類方法調用私有實例方法
這是一個奇怪的事情做。你想要解決什麼問題? –
正如@RenatoZannon所說,這很奇怪。我懷疑你應該重構並使用一個模塊。 'Module ModuleWithX'和'Module ModuleWithY',然後在你的新類中包含ModuleWithX' – Automatico