最佳答案
尽管阅读了“ 理解 Ruby 符号”,我仍然对使用符号时内存中数据的表示感到困惑。如果一个符号(其中两个包含在不同的对象中)存在于同一个内存位置,那么它们如何包含 与众不同值?我希望相同的内存位置包含相同的值。
下面是链接中的一段话:
与字符串不同,相同名称的符号被初始化,并且在 Ruby 会话期间只在内存中存在一次
我不明白它是如何设法区分同一个内存位置中包含的值的。
考虑一下这个例子:
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"
?
暂时忘记散列,我认为符号是一个值的 指针。我的问题是: