[ruby-list:41831] module の中で作った proc オブジェクトの中から module

From: ISII takesi <isii@...>
Date: 2006-02-19 13:07:49 UTC
List: ruby-list #41831
はじめまして、石井毅@ハーモニーシステムズと申します。
   (7年以上前に 鄭@ハーモニーシステムズの名で、投稿していたことがありますが、
     もうどなたも覚えてらっしゃらないですよね ... 気分は初投稿です ..)

下記のようなコードで、モジュール M1 を includeしたクラスC1のオブジェクトから
func_2() を呼び出すと func1() が無いとおこられてしまいます。
これはこういうものなのでしょうか?

module M1
     def func1
         print "  func1, self is ", self.inspect,"\n\n"
     end
     FUNC2 = proc {
         print "  Func2, self is ", self.inspect,"\n"
         func1()
     }
     def func_2()
         FUNC2
     end
end

### test 1 実行できる例
if ARGV[0] == "1"
     puts "---test1---"
     include M1
     puts "call func1"
     func1()
     puts "call func_2"
     func_2.call()
end

### test 2 実行できない例
if ARGV[0] == "2"
     puts "---test2---"
     class C1
         include M1
     end
     o1 = C1.new
     puts "call func1"
     o1.func1()
     puts "call func2"  # <---- func1 が undefine になる
     o1.func_2.call()
end

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
石井 毅  isii@harmony.co.jp
          m.tei@mix.ne.jp


In This Thread

Prev Next