【发布时间】:2014-07-30 22:18:20
【问题描述】:
我最近从koans 学习 ruby,我注意到关于符号和字符串对象的一件事。当我为两个不同的变量分配相同的符号时,我发现 object_id 是相同的。
2.1.1 :017 > symbol1 = :a
=> :a
2.1.1 :018 > symbol2 = :a
=> :a
2.1.1 :019 > symbol1.object_id
=> 361768
2.1.1 :020 > symbol2.object_id
=> 361768
现在看到这个,我认为它也应该是真正的字符串和整数。但是当我对字符串做同样的事情时,对象 id 最终会有所不同。
2.1.1 :021 > string1 = "test"
=> "test"
2.1.1 :022 > string2 = "test"
=> "test"
2.1.1 :023 > string1.object_id
=> 13977640
2.1.1 :024 > string2.object_id
=> 13932280
为什么符号和字符串的行为不同?
【问题讨论】:
-
看看reactive.io/tips/2009/01/11/… - Ruby 将重用符号,但不能重用字符串。
-
符号是这样设计的。学习here
标签: ruby