From: swec@... Date: 2010-04-15T12:13:55+09:00 Subject: [ruby-list:47018] [Q] instance_eval 中でのクラス変数のアクセス 東です。 ぼちぼちとRubyを使っていますが、また躓いてしまいまして、 先達のお知恵を拝借したいと思いメールしました。 「やりたいこと」 instance_eval の中で、クラス変数をアクセスしたい。 「テストコード」 class Class1 @@class_var1 = "c1" def initialize() @instance_var1 = "i1" end def func1() p @instance_var1 p @@class_var1 end end c = Class1.new c.instance_eval do func1() p @instance_var1 p @@class_var1 end このコードを実行すると、instance_evalブロック中、func1()の呼出は 成功するのに、p @@class_var1 は、以下のエラーでNGでした。 uninitialized class variable @@class_var1 それではと、 Class1.class_eval do c.instance_eval do func1() p @instance_var1 p @@class_var1 end end このようにコードを変更したところ、ruby1.9.1ではOKで、 ruby1.8.7では同じエラーです。 上の変更が適正なものかも、私には定かではないですが、 instance_eval 中でクラス変数をアクセスするポータブルな方法は あるのでしょうか? -- ひろひと