日時 Mon, 30 Aug 1999 01:24:48 +0900 の メール <199908291624.BAA19668 / hanare00.math.sci.hokudai.ac.jp> において gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) さん曰く: > >class A > > print "hogee\n" > >end > > > >tmp = A.new > > > >なんてやるとprintが実行されるのね。 > > Rubyではすべて(?)実行文ですね。 そういえばそんな話が。 すると new のときは class ... end が実行されるということですね。 どうもnewのときはinitializeメソッドが実行される気がしていた。 > >class A > > @abc = "ummm" > > def pr > > p @abc > > end > >end > > > >tmp = A.new > >tmp.pr > > > >では nil になって、インスタンス変数のassignは効かないのか。 > > えっと、この場合 def ... end の外側は A というオブジェクトの > スコープなので、例えば > > A.instance_eval{ p @abc } > とか > A.module_eval{ p @abc } > > で参照できます。 うーむ、むずかしい。たしかにこれでできますが、@abc を $abc にしても OKだけど、単にabcじゃだめってのがよくわかりません。 ここでの @abc はメソッドから参照できないけど、インスタンス変数 なんでしょうか? -- 人生を背負い投げ 菊谷 誠(Kikutani Makoto) kikutani / sprintmail.com