-1
這裏是我無法理解的代碼的簡化版本:是否有可能使一個常數不可改變?
1.9.3p448 :004 > a = {a: 1, b: 2}
=> {:a=>1, :b=>2}
1.9.3p448 :005 > b = a
=> {:a=>1, :b=>2}
1.9.3p448 :006 > b[:c] = 3
=> 3
1.9.3p448 :007 > a
=> {:a=>1, :b=>2, :c=>3}
1.9.3p448 :008 >
我不明白爲什麼a
變化。 只想改變b
,並保持與a
其原始值。
是的,你說得對。 'dup'解決了它。然而,這個問題對我來說似乎仍然很奇怪 –
請注意,'freeze'也很淺,因此可以防止mod到主對象,但不會引用包含的對象。 'H = {A 1,B:2,C:[1,2]}。凍結; h2 = h' h2 [:a] = 11'或'h2 [:d] = 4'會引發RuntimeError,但h2 [:c] << 4'會修改引用的數組:=>'{ :a => 1,:b => 2,:c => [1,2,4]} – dbenhur