可能重复:
Why don't more projects use Ruby Symbols instead of Strings?
What's the difference between a string and a symbol in Ruby?
我是ruby语言的新手。 根据我的阅读,我必须使用符号而不是字符串。 这是对的吗?
答案 0 :(得分:5)
你无需做任何事情。但是,如果您将反复使用相同的字符串文字,建议使用符号而不是字符串。原因是内存中只有1个符号,而如果你使用字符串文字,它会在你分配时重新创建,因此可能会浪费内存。
答案 1 :(得分:4)
字符串是可变的,因为符号不是。符号表现更好。
答案 2 :(得分:1)
这取决于你使用哪一个 - 你可以在任何你使用符号的地方使用字符串,但不是相反。在少数情况下,符号确实具有许多优点。
符号为您带来性能优势,因为同名的两个符号实际上映射到内存中的同一个对象,而两个具有相同字符的字符串会创建不同的对象。符号是不可变的和轻量级的,这使得它们非常适合在运行时不会改变的元素;例如,哈希表中的键。
以下是Ruby Newbie guide to symbols:
的精彩摘录所有优点的爷爷都是 也是优势的爷爷: 符号不能在运行时更改。 如果你需要绝对的东西, 积极的必须保持不变,并且 但你不想使用 标识符以大写字母开头 字母(常数),然后是符号 你需要什么。符号的最大优点是 它们是不可改变的(不能改变 在运行时),有时那是 正是你想要的。
有时这正是你的意思 不想要。大多数字符串使用 需要操纵 - 有些你 不能做(至少直接)用 符号。
符号的另一个缺点是 他们没有String类 丰富的实例方法集。该 String类的实例方法make 生活更轻松。更容易。
答案 3 :(得分:0)
符号有两个主要优点: