[ruby-list:2995] Re: access to instance variable

From: matz@... (Yukihiro Matsumoto)
Date: 1997-05-22 02:16:38 UTC
List: ruby-list #2995
まつもと ゆきひろです

In message "[ruby-list:2991] Re: access to instance variable"
    on 97/05/21, toyofuku@juice.or.jp <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

という感じでどうでしょう?

                                まつもと ゆきひろ /:|)

In This Thread