概要
Module#module_eval(expr, fname = "(eval)", lineno = 1) -> object[permalink][rdoc]
Module#module_eval {|mod| ... } -> object
Module#class_eval(expr, fname = "(eval)", lineno = 1) -> object
Module#class_eval {|mod| ... } -> object
詳細
モジュールのコンテキストで文字列 expr またはモジュール自身をブロックパラメータとするブロックを 評価してその結果を返却。
サンプルコード
module Hogeable def hogeable end end class Hoge include Hogeable def hoge print 'hoge' end end Hoge.module_eval %Q{ def hoge2 puts 'hoge2' end } Hogeable.module_eval %Q{ def hogeable2 puts 'hogeable2' end } Hoge.new.hoge2 Hoge.new.hogeable2 print Hoge.new.methods.grep /hoge/
出力
出力
hoge2 hogeable2 [:hoge, :hoge2, :hogeable, :hogeable2]