0

オーディオ アプリケーション環境内で Ruby コンポーネントを使用しています。RubyEditこの Ruby コンポーネントは、クラスのインスタンスによって表されます。これにより、私の 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

しかし、拡張可能な配置方法eventと方法がわかりません。drawインターフェース?

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 に答える