豊福@パパイヤです。 まつもとさん >| 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