From: Tanaka Akira Date: 2004-09-05T21:21:19+09:00 Subject: [ruby-dev:24224] Re: 1.instance_eval "@@a" dumps core In article <1094381475.779184.6159.nullmailer@picachu.netlab.jp>, Yukihiro Matsumoto writes: > えーと、実装したのが「あるべき仕様」なんじゃなくて、「ネスト はい。言葉が足りませんでしたが、現在の実装があるべき仕様ではないことは 理解していて、あるべき仕様がなぜそういう仕様なのかを尋ねているつもりで す。Ruby2 の仕様について尋ねていると考えてください。 > の外に見に行かない」のが「あるべき仕様」のつもりでした。問題 > はそういう条件でもネストの外に見に行かなくてはいけないケース > があることをすっかり忘れて、中途半端なものを実装してしまった > ということです。 現在の実装があるべき仕様でないことは [ruby-dev:24221] によりわかったの で、[ruby-dev:24219] の説明があるべき仕様なのだろうと思っていたのです が、違うんでしょうか? [ruby-dev:24220] で指摘したように、ちょうど [ruby-dev:24219] の説明は 現在の実装とは異なりますし。 > 「予定されている仕様」というのは、instance_evalおよび特異メ > ソッド定義の内側ではネストの1段外側を見る、です。 > instance_eval()の場合はその呼び出し地点でのクラス変数の値で > すし、特異メソッド定義の場合は、定義対象のオブジェクトに関ら > ず、それを囲んでいるクラスのクラス定数です。 なるほど。 > 「普通のクラスのクラス変数」というのは > > 1.instance_eval("@@a") > > がFixnumクラスのクラス変数を参照するということでしょうか。そ > れはできるだけ静的スコープにしたいという私の希望には反するの > ですが。 > > class Fixnum > @@a = 1 > end > class Foo > @@a = 4 > p 1.instance_eval("@@a") > end > > が、1でなく4を出力するのがよいのではないかと思っています。 [ruby-dev:24219] の説明に出てきた特異クラスというのはここには出て来な いように思うのですが、あの説明はもう関係ないんでしょうか? -- [田中 哲][たなか あきら][Tanaka Akira]