2次元配列を作成しました.2次元配列全体にこのように9が設定されています。ルビの2次元配列の要素の値を変更するには?
matrix = Array.new(5,(Array.new(5,9)))
次に私は[0][0]
位置に1
を割り当てるいアレイ全体
puts "#{matrix}" # => [[9, 9, 9, 9, 9], [9, 9, 9, 9, 9], [9, 9, 9, 9, 9], [9, 9, 9, 9, 9], [9, 9, 9, 9, 9]]
次のページを印刷しています。
matrix[0][0] = 1
は、その後、私は再びので、行列
puts "#{matrix}" # => [[1, 9, 9, 9, 9], [1, 9, 9, 9, 9], [1, 9, 9, 9, 9], [1, 9, 9, 9, 9], [1, 9, 9, 9, 9]]
を印刷しています、ここでのケースです!この割り当てによってすべての行が影響を受けている理由[0][0]
の位置を変更するだけではいけません。 私はruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
を使用しています。
ヒントは出力されています。 'matrix.each {| a | puts a.object_id} 'が返されます。 –
彼らはすべて同じです!あなたのポイントを得ました –
'matrix = Array.new(5、Array.new(5,9))'(余分な括弧は必要ありません)は 'arr = Array.new(5,9);と同じです。 matrix = Array.new(5、arr) 'となります。とった? –