关于红宝石符号的问题

时间:2010-12-10 20:21:24

标签: ruby

  

可能重复:
  Why don't more projects use Ruby Symbols instead of Strings?
  What's the difference between a string and a symbol in Ruby?

我是ruby语言的新手。 根据我的阅读,我必须使用符号而不是字符串。 这是对的吗?

4 个答案:

答案 0 :(得分:5)

你无需做任何事情。但是,如果您将反复使用相同的字符串文字,建议使用符号而不是字符串。原因是内存中只有1个符号,而如果你使用字符串文字,它会在你分配时重新创建,因此可能会浪费内存。

答案 1 :(得分:4)

字符串是可变的,因为符号不是。符号表现更好。

阅读本文以更好地understand symbols, strings and their differences

答案 2 :(得分:1)

这取决于你使用哪一个 - 你可以在任何你使用符号的地方使用字符串,但不是相反。在少数情况下,符号确实具有许多优点。

符号为您带来性能优势,因为同名的两个符号实际上映射到内存中的同一个对象,而两个具有相同字符的字符串会创建不同的对象。符号是不可变的和轻量级的,这使得它们非常适合在运行时不会改变的元素;例如,哈希表中的键。

以下是Ruby Newbie guide to symbols

的精彩摘录
  所有优点的爷爷都是   也是优势的爷爷:   符号不能在运行时更改。   如果你需要绝对的东西,   积极的必须保持不变,并且   但你不想使用   标识符以大写字母开头   字母(常数),然后是符号   你需要什么。

     

符号的最大优点是   它们是不可改变的(不能改变   在运行时),有时那是   正是你想要的。

     

有时这正是你的意思   不想要。大多数字符串使用   需要操纵 - 有些你   不能做(至少直接)用   符号。

     

符号的另一个缺点是   他们没有String类   丰富的实例方法集。该   String类的实例方法make   生活更轻松。更容易。

答案 3 :(得分:0)

符号有两个主要优点:

  • 他们就像实习生的字符串,所以他们可以提高表现。
  • 它们在语法上是不同的,可以使您的代码更具可读性,特别是对于使用哈希表作为复杂内置数据结构的程序。