From: matz@... (Yukihiro Matsumoto) Date: 1997-05-22T11:16:38+09:00 Subject: [ruby-list:2995] Re: access to instance variable まつもと ゆきひろです In message "[ruby-list:2991] Re: access to instance variable" on 97/05/21, toyofuku@juice.or.jp writes: | 豊福@パパイヤです。 | class Buffer | TABSTOP = 8 | attr :tabstop, TRUE | @tabstop = TABSTOP | end | | x = Buffer.new | |で似たようなことできるのかなと思って試したのですが、 |x.tabstop が nil になるようです。どこがいけないので |しょう。またこのままで、set-default に対応することが |書けるでしょうか。(Buffer::TABSTOP = 8 はダメなん |ですよね) あー,TABSTOPはクラス定数を定義していて,attrはアクセサを定 義しているので良いのですが,その次の行はBufferクラスオブジェ クトそのもののインスタンス変数を設定しています.設定したいの はBufferクラスのインスタンスのインスタンス変数でしょうから, これでは望むように値が設定されないわけです. このような場合,オブジェクトが生成される時に呼び出されるメソッ ドinitializeを使ってインスタンス変数の初期化を行ないます. class Buffer TABSTOP = 8 attr :tabstop, TRUE def initialize @tabstop = TABSTOP end end という感じでどうでしょう? まつもと ゆきひろ /:|)