0

我在音频应用程序环境中使用 Ruby 组件。这个 Ruby 组件由一个RubyEdit类的实例表示。这提供了我的 Ruby 代码和环境之间的接口。

例如,如果我编写self它输出代表该组件的 RubyEdit 类的实例:

在此处输入图像描述

好消息是我可以/必须“实现/扩展”一些RubyEdit在收到某些事件时将调用的方法。我可以event为该实例定义我的自定义方法:

def event
    # my own event code
end

当环境在这个 Ruby 组件之外得到一些事件时,它将被调用。或者我可以调用一个class method被调用的redraw,它会调用我的自定义方法draw

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

我需要了解这个过程的一些层次结构,所以我RubyEdit在 Ruby 中模拟了那个类。

它看起来如何?我的意思是:我怎样才能提供“稍后”定义的方法?

我认为这就是 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方法可扩展。接口?

4

1 回答 1

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
于 2016-02-26T13:36:54.350 回答