在Rails中,變量似乎是鏈接的,即如果你使a = b,如果你改變了b,你也改變了。此外,如果你改變了,你也改變b。鏈接/配對的變量,以及如何控制或打破這些鏈接
我來自一個原始的程序設計背景(FORTRAN和C:語言航空航天仍然受限於),所以這種變量鏈接對我來說是新的。此外,我給了我一些麻煩,所以我正在尋找一種方法來控制它。
我想能夠定義一個變量作爲一個閃爍的常量值(或值的數組),直到我重新定義一個具體的,讓它保持不變。更具體地講,如果我這樣做:
A = B
然後,我要重新定義
b = Q
我會想保留原來的B值(稱之爲B」 )而新的b的值爲q。
A = B '
b = Q
A = B'!= B = Q
看從導軌控制檯下面的腳本來進一步說明上述的可變聯。你可以知道這兩個變量是相互依賴的:你不能改變另一個。任何控制這種現象的幫助,或者僅僅是參考我可以更多地瞭解它的地方,都會更加讚賞。
system :004 > b = []
=> []
system :005 > b = [123,456]
=> [123, 456]
system :006 > a = b
=> [123, 456]
system :007 > a
=> [123, 456]
system :008 > b
=> [123, 456]
system :009 > b[0]
=> 123
system :010 > b[0]=789
=> 789
system :011 > a
=> [789, 456]
system :012 > b
=> [789, 456]
system :013 > a[0] = 0
=> 0
system :014 > a
=> [0, 456]
system :015 > b
=> [0, 456]
system :016 >
這似乎只與哈希發生..也就是說,如果A = [ 0,1]; b = a然後b => [0,1] ...然後如果你改變一個[0],你也會改變b [0]。但如果你使用變量如a =「asdf」; b = a,a =「fjf」,那麼b將持續爲「asdf」。 – jay 2011-12-23 05:17:41
有趣的是,有沒有辦法讓哈希不斷呢? – 2011-12-23 06:18:18