2011-06-20 5 views
0

def [instance].[methodname]; [...]; endでRubyのインスタンスにメソッドを動的に追加する方法を参照してください。Rubyでインスタンスメソッドを動的に追加する(

しかし、別の場所に存在するメソッドを特定のインスタンスに関連付けることに興味があります。例えば上記のコードの最後の行のメソッド呼び出しがうまくいくように、私は単にmy_objmy_methを付ける可能性がどのように

def my_meth 
    puts self.foo 
end 

class MyCls 
    attr_accessor :foo 
end 

my_obj = MyCls.new 
my_obj.my_meth 

答えて

5

あなたのクラスにモジュールを追加するには、includeまたはextendを使用できます。 extendは:

class MyCls 
    include Foo 
    attr_accessor :foo 
end 
:あなたはミックスインするモジュール場で、このように必要がある場合を除き

module Foo 
    def my_meth 
    puts self.foo 
    end 
end 

class MyCls 
    attr_accessor :foo 
end 

my_obj = MyCls.new 
my_obj.extend(Foo) 
my_obj.foo = "hello" 
my_obj.my_meth 

それはあなたのモジュールそうのようなincludeに、一般的にはましです

関連する問題