[ruby-list:37816] Re: 配列の使い方

From: IWAOKA Masahiro <iwaoka@...>
Date: 2003-06-23 12:24:54 UTC
List: ruby-list #37816
いわおかです。

In the message <3EF6E5FF.96FEE2D9@tjsys.co.jp>,
  on Mon, Jun 23, 2003 at 08:32:35PM +0900, Kouji Miyauchi wrote:
> class Hoge
> 	@@a = 10

@@a はクラス変数なので、いくつ new しても実体は 1 つです。インスタ
ンス毎に変えるならば @a ですが、それでも

> class Hogehoge
> 	@@ary = Array.new()
> 	def pp()
> 		fi = Hoge.new
> 		se = Hoge.new
> 		se.set( 11 )
> 		@@ary[0] = fi
> 		@@ary[1] = se
> 		fi.set( 12 )
> 		@@ary[2] = fi

@@ary[0] と @@ary[2] の指し示す実体は同じです。

> 実際に行いたいことは
> 下のC++のコードと同等の処理です。

ということでしたら、こんな感じでどうでしょうか? 実は僕も Array を
同じクラスの別のインスタンスで初期化したい時にいつも迷うので、いい
方法がありましたら教えて下さい。

#!/usr/local/bin/ruby

class Hoge
	def initialize
	    @a = 10
	    super
	end

        def disp()
                p @a
        end

        def set ( s )
                @a = s
        end
end

class Hogehoge
	def initialize
		@@ary = Array::new
		for i in 1..3
		    @@ary << Hoge.new
		end
		super
	end

        def pp()
                @@ary[1].set(11)
                @@ary[2].set(12)
                @@ary[0].disp()
                @@ary[1].disp()
                @@ary[2].disp()
        end
end

testcase = Hogehoge.new
testcase.pp()

いわおか

In This Thread