在Ruby中字符串和符号有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

在Ruby中字符串和符号有什么区别,什么时候应该使用其中一个或另一个呢?

提问于
用户回答回答于

主要区别在于表示单个值的多个符号是相同的,而字符串则不然。例如:

irb(main):007:0> :test.object_id
=> 83618
irb(main):008:0> :test.object_id
=> 83618
irb(main):009:0> :test.object_id
=> 83618

3引用符号:test,对所有相同的对象。

irb(main):010:0> "test".object_id
=> -605770378
irb(main):011:0> "test".object_id
=> -605779298
irb(main):012:0> "test".object_id
=> -605784948

3引用字符串"test",对于所有不同的对象。

这意味着使用符号可能会根据应用程序节省很多内存。因为它们是相同的对象,因此比较符号的等同性也更快,因为比较相同的字符串要慢得多,因为字符串值需要比较而不仅仅是对象ID。

用户回答回答于

符号和字符串有什么区别?

  1. 符号是不可变的:它们的值保持不变。
  2. 相同符号的多个用途具有相同的对象ID,并且与字符串相比是相同的对象,每次都是具有唯一对象ID的不同对象。
  3. 无法调用任何字符串方法,如符号上的#upcase,#split。

中文版:理解Ruby Symbol

扫码关注云+社区