2016-02-26 44 views
0

我在音頻應用程序環境中使用Ruby組件。此Ruby組件由RubyEdit類的實例表示。這提供了我的Ruby代碼和環境之間的接口。如何動態添加/擴展類的方法?

例如,如果我寫self它輸出表示該組件的RubyEdit類的實例:

enter image description here

的好處之一是,我可以/必須「實現/擴展」一些方法RubyEdit當它得到一些事件時會打電話。我可以定義我的自定義方法event該實例:

def event 
    # my own event code 
end 

,它會被調用當環境得到這個Ruby組件以外的一些事件。或者,我可以叫class methodredraw,它會叫我的自定義方法draw

def draw 
    # my own draw code (this will called after invoking redraw from Ruby Component) 
    end 

我需要了解這個過程的一些層次,所以我做的紅寶石是RubyEdit類的模擬。

它會如何看起來?我的意思是:我如何提供將在「稍後」定義的方法?

這是RubyEdit會怎麼看,我認爲:

class RubyEdit 
    def self.redraw 
    # calling this class method should invoke my extended draw method 
    end 

    def draw 
    end 

    def event 
    end 
end 

,但我不明白如何放置eventdraw方法可擴展。接口?

回答

3
module ExtendRubyEdit 

    def self.included(base) 
    base.extend(ClassMethods) 
    end 

    def draw 
    end 

    def event 
    end 

    module ClassMethods 
    def redraw 
    end 
    end 
end 

class RubyEdit 
    include ExtendRubyEdit 
end