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

From: toyofuku@...
Date: 1997-05-22 05:26:52 UTC
List: ruby-list #3001
  豊福@パパイヤです。

まつもとさん
>|        class Buffer
>|          attr :default_tabstop, TRUE
>|          @default_tabstop = 8
>|          attr :tabstop, TRUE
>|          def initialize
>|            @tabstop = @default_tabstop
>|            # @tabstop = Buffer.default_tabstop
>|          end
>|        end
>|
>|        x = Buffer.new
>|
>|を試したところ x.tabstop は nil でした。
>|@tabstop = Buffer.default_tabstop の方でやると
>|ERR: undefined method 'default_tabstop' for Buffer(Class)
>|でした。
> 
> 上述の理由により@default_tabstopがアクセスできないからです.
> またattrはメソッドは定義しますが,クラスメソッドは定義しませ
> ん.

  @tabstop = @default_tabstop の方はエラーにはならないの
ですが、このときの右辺の @default_tabstop は何を見ている
のでしょう。


  ではこれならどうだ。

      class Buffer
        @default_tabstop = 8
        def Buffer.default_tabstop()
          @default_tabstop
        end
        def Buffer.default_tabstop=(n)
          @default_tabstop = n
        end

        attr :tabstop, TRUE
        def initialize
          @tabstop = Buffer.default_tabstop
        end
      end

      x = Buffer.new
      x.tabstop # 8

      Buff.default_tabstop = 4
      y = Buffer.new
      y.tabstop # 4

となりました。
  バッファローカル変数っぽく書くのはこれでいいんでしょうか。
---
			豊福@パパイヤ
			unbound@papaya.juice.or.jp
			toyofuku@juice.or.jp

In This Thread

Prev Next