From: Yukihiro Matsumoto Date: 2005-01-15T05:28:31+09:00 Subject: [ruby-dev:25474] Re: [BUG?] global scope @ivar まつもと ゆきひろです In message "Re: [ruby-dev:25472] [BUG?] global scope @ivar" on Fri, 14 Jan 2005 15:14:01 +0900, keiju@ishitsuka.com (Keiju ISHITSUKA) writes: |下記のプログラムを実行すると. |下記のような実行結果になります. | |X.new.xxを実行したときの@Fooの値が明らかにおかしいと思うのですが? インスタンス変数はその定義からインスタンスごとに別の値を持ち ます。ですから # この時点でのレシーバ (main) の@Fooを1にする |@Foo = 1 # レシーバの@Fooを出力するメソッド |def foo | p "@Foo=#{@Foo.inspect}" |end | |class X | def xx # レシーバの@Fooを出力する | foo | end |end #fooの(暗黙の)レシーバはmain。よって1を出力 |foo #=> @Foo=1 #fooを呼び出した時のレシーバはX.new。よって@Fooは未設定(nil) |X.new.xx #=> @Foo=nil なにもおかしいことはないと思います。むしろ、石塚さんがなにを 期待したのかが疑問です。 |でも, 動的スコープっぽくてちょっと... というコメントも理解できません。 まつもと ゆきひろ /:|)