【发布时间】:2012-01-26 13:52:24
【问题描述】:
在Rails 中,变量似乎是相互关联的,即如果你让a = b,如果你改变b,你也会改变a。而且,如果你改变了a,你也改变了b。
我来自原始的编程背景(FORTRAN 和 C:语言航空航天仍然被束缚),所以这种变量链接对我来说是新的。此外,它给我带来了一些麻烦,所以我正在寻找一种方法来控制它。
我希望能够将变量定义为闪烁的常量值(或值数组),并且在我专门重新定义该变量之前,让它保持不变。更具体地说,如果我这样做:
a = b
然后我想重新定义
b = q
我希望 a 保留原始 b 值(称为 b'),而新 b 具有值 q。
a = b'
b = q
a = b' != b = q
从 Rails 控制台查看下面的脚本,以进一步说明上述变量链接。你可以看出这两个变量是相互依赖的:你不能改变一个而不改变另一个。任何控制这种现象的帮助,或者只是参考我可以在哪里了解更多信息,将不胜感激。
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]... 那么如果你改变 a[0] 你也会改变 b[0]。但是如果您使用变量,例如 a = "asdf"; b=a, a="fjf" 然后 b 将保持为“asdf”。
-
有趣,但有没有办法让哈希值保持不变?
标签: variables variable-assignment