尽管我读过"Understanding Ruby Symbols",但当涉及到使用符号时,我仍然对内存中数据的表示感到困惑。如果一个符号,其中两个包含在不同的对象中,存在于相同的内存位置,那么它们为什么包含不同的值呢?我原本期望相同的内存位置包含相同的值。
这是链接中的引用:
与字符串不同,具有相同名称的符号在
会话期间仅在内存中存在一次
我不明白它是如何区分相同内存位置中包含的值的。
考虑这个例子:
patient1 = { :ruby => "red" }
patient2 = { :ruby => "programming" }
patient1.each_key {|key| puts key.object_id.to_s}
3918094
patient2.each_key {|key| puts key.object_id.to_s}
3918094
patient1
和patient2
都是散列,这很好。然而,:ruby
是一个符号。如果我们要输出以下内容:
patient1.each_key {|key| puts key.to_s}
那么输出的是什么?"red"
还是"programming"
暂时忘记哈希,我认为符号就是指向某个值的指针。我的问题是:
https://stackoverflow.com/questions/2341837
复制相似问题