読者です 読者をやめる 読者になる 読者になる

配列のコピーに関する注意点(ruby) なんか消えたので

irb(main):034:0> y=[2]

=> [2]

irb(main):035:0> x=y

=> [2]


irb(main):036:0> y=y+[3]

=> [2, 3]

irb(main):037:0> y

=> [2, 3]

irb(main):038:0> x

=> [2]

xは変化していない。

irb(main):039:0> x=y

=> [2, 3]

irb(main):040:0> y[0]=1

=> 1

irb(main):041:0> x

=> [1, 3]

xは変化した。

irb(main):042:0> x.object_id

=> -608181768

irb(main):043:0> y.object_id

=> -608181768

同じオブジェクトを見てる。

irb(main):044:0> y=y+[3]

=> [1, 3, 3]

irb(main):045:0> y.object_id

=> -608223068

irb(main):046:0> x.object_id

=> -608181768

違うオブジェクトを見てる。

>> a=[1,2,3]

>> def henka(x)
>> x[0]=100
>> end

>> henka(a)
>> a
=> [100, 2, 3]

変化しました。

>> def henka2(x)
>> x+[100]
>> end

>> henka2(a)

>> a
=> [100, 2, 3]

変化しませんでした。