我在各种网站上看到了这个答案:
如果对象的内容(字符序列)很重要,请使用字符串如果对象的标识很重要,请使用符号
但是,这究竟意味着什么?请给我一个解释,即使是外行也能理解.
a = :foo b = :foo
a
并b
在内存中引用相同的对象(相同的标识)
a.object_id # => 898908 b.object_id # => 898908
字符串表现不同
a = 'foo' b = 'foo' a.object_id # => 70127643805220 b.object_id # => 70127643805200
因此,您使用字符串来存储数据并对数据执行操作(替换字符或诸如此类),并使用符号来命名事物(哈希中的键或其他内容).有关符号的更多用例,请参阅此答案.