2012-04-24 5 views
0

こんにちは私はdefine_methodを使用していくつかのメソッドを定義するためにmixinを使用しようとしています。私は、だから私は、その後mixinでdefine_methodを使用するには?

class B 
    include A 
end 

B.new.C# => 'method c' 

を行うことができます

module A 
    %w(a b c d).each do |w| 
    define_method(w) { "method #{w}" } 
    end 
end 

ような何かをしたいと思います。しかし、それは動作しません。

私は、(ほとんど)含まれている、instance_eval class_evalなどを試しました... nothign work。

できますか?

アップデートは、当初、私は投稿の例では、構文エラーがありましたが、それは本当の問題ではありませんでした。私はちょうどポストのための例を作りました、それは実際の例ではありませんでした(少し長すぎて投稿することはできません)。

私の問題は、私は私のリスト%w(a, b, c, b)の代わりに、したがって、a,ではなくaの定義された%w(a b c b)

にカンマを使用しました。愚かな私、(しかし、スポットにハード)。あなたたちは、問題を解決する私を助けたために、それが動作することを見て

、感謝

+1

よく、それは私のために働く(R 1.8.7) –

+1

あなたのモジュールに 'end'がありません。どのように動作していないのですか?エラーメッセージはありますか? – matt

+0

@mattは問題ではありませんでしたが更新を参照してください。ありがとう – mb14

答えて

4

モジュールはすべきではありません:

ある
module A 
    %w(a b c d).each do |w| 
    define_method(w) { "method #{w}" } 
    end 
end 

endが欠落していました。

+0

+1:それは1.8.7で働いた。 –

+0

ありがとう、それは問題ではなかった、私の更新を参照してください – mb14

関連する問題