2010-07-14 32 views
1

鑑於下面的Ruby代碼,並且假設我有一個Klass實例,我怎樣才能在我的Klass實例上調用do_stuff方法。我想將我的Klass實例轉換爲Subklass。我知道類型轉換在Ruby中不可能 - 有沒有辦法僞造它?在Ruby中僞造一個類型?

class Klass 
    ... 
end 

class Subklass < Klass 
    ... 
    def do_stuff 
    ... 
    end 
end 

inst = Klass.new 
inst.magically_convert_to_subklass_instance # Need help here 
inst.do_stuff 

回答

2

繼承不能這樣工作。如果你有一個Klass實例,你不能以任何方式將它轉換爲Subklass。 要共享這樣的代碼,您最好使用一個模塊來定義do_stuff方法,以便將模塊中的功能附加到Klass中。 也就是說:

module StuffModule 
    def do_stuff 
    print "do stuff" 
    end 
end 

class Klass 
include StuffModule 
end 

inst = Klass.new 
inst.do_stuff 
+0

當然,你不能投射「向上」。感謝您的選擇。 – Joel 2010-07-15 00:02:59