字符串转符号 String#to_sym 和 String#intern
符号转字符串 Symbol#to_s 和 Symbol#id2name
Symbol有唯一的对象标识符(对象标识符用object_id获取)。Symbol 对象一旦定义将一直存在,直到程序执行退出。Symbol 类只有一个类方法 all_symbols
和7个实例方法。
通常来讲,当你面临 String 还是 Symbol 的选择时,可以参考以下标准:
- 如果使用字符串的内容,这个内容可能会变化,使用 String
- 如果使用固定的名字或者说是标识符,使用 Symbol
那么什么时候我们会用到名字呢?很多时候都会,比如枚举值、关键字(哈希表关键字、方法的参数)等等
哈希表是 Symbol 应用最为广泛的地方。