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

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

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

在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
irb(main):010:0> "test".object_id
=> -605770378
irb(main):011:0> "test".object_id
=> -605779298
irb(main):012:0> "test".object_id
=> -605784948

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

至于什么时候使用,我通常使用字符串来处理几乎所有的东西,除了散列键以外,我真的想要一个唯一的标识符,而不是一个字符串。

用户回答回答于

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

  1. 符号是不变的:它们的价值是不变的。
  2. 同一符号的多个用途具有相同的对象ID,并且与字符串相比是相同的对象,而字符串每次都是具有唯一对象ID的不同对象。
  3. 不能调用任何字符串方法,如#upcase、#拆分符号。

扫码关注云+社区