From: Take_tk Date: 2003-11-02T03:14:29+09:00 Subject: [ruby-list:38717] Re: 多重配列 たけ(tk)です。 [ruby-list:38716] 多重配列 にて Teppei さん 曰く: > 二次元配列が必要なので作成してみたのですが、 > 挙動がおかしいように思います。 > > -------------------------------------------- > a=Array.new(3,Array.new(3,0)) > p a > a[0][0] = 1 > p a > -------------------------------------------- > 実行結果として > > [[0, 0, 0], [0, 0, 0], [0, 0, 0]] > [[1, 0, 0], [0, 0, 0], [0, 0, 0]] > > を期待していたのですが、 > > [[0, 0, 0], [0, 0, 0], [0, 0, 0]] > [[1, 0, 0], [1, 0, 0], [1, 0, 0]] > > のようになってしまいます。 これも例によって「オブジェクトの共有」の問題ですね。 b = [0,0,0] a = [b,b,b] p a a[0][0] = 1 p a という扱いになっているようです。 take_tk = kumagai hidetake