From: Koji Arai Date: 2000-02-15T22:50:23+09:00 Subject: [ruby-dev:9222] Re: bang method returns string always 新井です。 >>> From: Kazuhiro Yoshida >>> Date: Tue, 15 Feb 2000 20:40:02 +0900 >>> Subject: [ruby-dev:9220] Re: bang method returns string always > もりきゅうです。 > >は既にインスタンス変数名として使われている可能性があるのであ > >まり良くないです。 > > そうかなあ。私は使ったことなかったので,結構いい案じゃないかなと > 思ったのでした。添付した c.rb で *rb を調べたところ, 私も@[A-Z]\w+案が好きです。が、またしても互換性問題が・・・ 住みにくい世の中ですね。 > また,今さらながらに気づいたことですが > 現状 (ruby 1.4) で > module Mod > @RCS_ID = '-$Id: ... $-' > end > と書いた場合の @RCS_ID はどのインスタンスのインスタンス変数 > なのかも理解できない,私。 これは、Mod自身のインスタンス変数ですね。 module Mod @var = 1 end Mod.instance_eval { p @var } => 1 クラス/モジュールのインスタンス変数は継承できない点でクラス 変数とは異なるのだと昔々説明があったような気がします。 module Mod @var = 1 end class Klass include Mod end Klass.instance_eval { p @var } => nil 一方、共有変数は継承可能 module Mod VAR = 1 end class Klass include Mod end Klass.instance_eval { p Mod::VAR # 1.4.x and 1.5.x p Klass::VAR # 1.5.x } => 1 1 定数が継承可能になったため、 class Klass; end p Klass.constants ["TRUE", "ARGV", "RELEASE_DATE", "STDOUT", ....] と1.5では無節操(?)な状態になってはいるけど、上書きは出来ないみたい。 ARGV = %w(a b c) class Klass p Klass::ARGV ARGV = [1,2,3] p Klass::ARGV end p ARGV => ["a", "b", "c"] [1, 2, 3] ["a", "b", "c"] 共有変数への再代入は、またwarningが出るようになったし、現在 の共有変数の扱いについて説明が欲しい今日この頃。 -- 新井康司 (Koji Arai)