人気ブログランキング | 話題のタグを見る

module_eval

module_eval(expr) はモジュールのコンテキストで文字列 expr を評価してその結果を返す。Module の関数などを動的に定義するのに使うらしい。

サンプルプログラム module_eval.rb

module A
  def A.print
    "module A"
  end
end

module B
  def B.print
    "module B"
  end
end

require 'irb'
IRB.start

実行例
C:\Users\Owner\Documents\Ruby>ruby module_eval.rb
irb(main):001:0> A.print
=> "module A"
irb(main):002:0> B.print
=> "module B"
irb(main):003:0> A.module_eval %[def A.print; 'module AA'; end ]
=> nil
irb(main):004:0> A.print
=> "module AA"
irb(main):005:0> B.print

プログラムの実行中にも module A のメソッドは再定義できることがわかる。
by tnomura9 | 2008-03-30 14:48 | Ruby | Comments(0)
<< irb.rb その1 e2mm... instance_eval >>