为什么Ruby暴露出符号供显式使用?这不是通常由解释器/编译器处理的类型优化吗?
问题的一部分在于Ruby字符串是可变的。由于每个Ruby分配的字符串必须是独立的(它不能缓存短/常见字符串),因此有一个Symbol
类型让程序员拥有本质上是不可变的、内存高效的字符串非常方便。
此外,它们与enum
具有许多相似之处,但对程序员来说更加简单。
Ruby符号在其他类似语言中用作字符串常量的替代品。除了性能方面的好处外,它们还可以用于在字符串数据和更抽象的符号之间进行语义区分。由于语法不同,它们可以在代码中清晰地区分。