1
這是我的挑戰。陣列元素被修改
a = ["1", "2"]
b = ["3", "4"]
a << b
a # => ["1","2",["3","4"]]
如果我修改的b[0]
值,a
也被改變。
b[0] = "5"
a # => ["1","2",["5","4"]]
b
推入a
後,b
作了修改。爲什麼a
發生了變化,我該如何解決?
這是我的挑戰。陣列元素被修改
a = ["1", "2"]
b = ["3", "4"]
a << b
a # => ["1","2",["3","4"]]
如果我修改的b[0]
值,a
也被改變。
b[0] = "5"
a # => ["1","2",["5","4"]]
b
推入a
後,b
作了修改。爲什麼a
發生了變化,我該如何解決?
b
引用的數組實例和推入a
的數組實例 - 都是同一實例 - 因此,修改一個實例會導致其他實例發生更改。
你可以試試:
a << b.dup
,這樣的b
副本推入a
。
你的第二個問題不清楚。修復它意味着什麼? – sawa
我假設你想'%w(1 2 3 4)'作爲結果。如果我是對的,你可以使用'a.push(* b)',這樣'a'不會隨'b'改變。 – Aetherus
假設你進入一件藍色T恤的房子,然後換成紅色的T恤。如果有人拍了房子的照片,你會期望有人穿着藍色T恤,或者有人穿紅色T恤的房子? 「但換衣服的是我,爲什麼房子改變了?」房子沒有,但其內容確實如此。 – Amadan