From: Sora Harakami Date: 2010-04-15T13:53:49+09:00 Subject: [ruby-list:47019] Re: [Q] instance_eval 中でのクラス変数のアクセス ソラです。 Module#class_variable_getではどうでしょう。 p c.class.class_variable_get(:"@@class_var1") 2010/4/15 : > 東です。 > > ぼちぼちと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 中でクラス変数をアクセスするポータブルな方法は > あるのでしょうか? > > -- > ひろひと > > -- Sora Harakami - sora134[at]gmail.com Blog: http://codnote.net/ Twitter: http://twitter.com/sora_h Skype: sora_harakami