From: Kikutani Makoto Date: 1998-11-01T14:41:37+09:00 Subject: [ruby-list:10557] Re: ruby:struct -> ext module -> ruby きくたにです。 Wed, Oct 14, 1998 at 01:26:43PM +0900 において Kikutani Makoto 曰く: > Wed, Oct 14, 1998 at 01:08:31PM +0900 において > Yukihiro Matsumoto さん曰く: > > > |この配列をいじらなければいいんですが、このあいだようやく知った > > |配列への挿入 a[5,0] = b とかをやるとだめですね。 > > |つまり、この方法の配列の挿入は要素のcopyですか? > > > > ?? rubyでは基本的に暗黙のコピーは発生しません. > > ary_push()とかで配列に追加すれば良いんじゃないですかね. > > そうでしたか... > なにか勘違いがあるようです。調べます。 勘違いの理由がわかりました。 a = [1, 2, 3 ] a[1, 0] = 5 p a の結果が [1, 5, 2, 3] なもんで s = Struct.new("Test", :x, :y, :z) b = [] b[0] = s.new(100, 200, 200) b[1] = s.new(300, 400, 500) b[2] = s.new(600, 700, 800) tmp = s.new(10, 20, 30) b[1, 0] = tmp p b の結果が [#, #, #, #] となるかと思いきや [#, 10, 20, 30, #, #] となって驚いたわけです。 b[1, 0] = [tmp] としなきゃいかんのですね? StructというのはArrayの一種なんですか? -- 人生を背負い投げ 菊谷 誠(Kikutani Makoto) kikutani@sprintmail.com