过去几天我一直在研究如何理解 Ruby 中的符号。我在 Google 上阅读了每篇关于 Ruby 符号的文章,其中大部分都是错误的解释,所以我来到这里,我看到一些关于这个主题的问题存在,但是我不明白,抱歉。
根据我的阅读,我了解到符号是不可变且唯一的,因此内存消耗和性能优于常规字符串。
问题#1
符号在生活中的目的是否与字符串一样服务于相同的利基市场?符号的目的是作为方便的常量而不携带值,就像后面的部分:它是实际值吗?
问题#2
我什么时候真正知道在哪里使用符号?
我非常感谢您自己对符号的解释,而不是链接到 Google 上的文章(我确保我已经阅读了它!)。
如果你能提供比我在这里询问的更多关于符号的信息,我也很感激你的时间,因为我根本不了解它们,甚至不了解存储在 :symbol_something 中的内容,它是引用还是什么?
非常感谢您的帮助!
最佳答案
ruby 中的符号是一种有效利用不可变字符串的方法。例如,假设您想使用字符串“my_key”作为散列键。简单地使用字符串既浪费空间又浪费效率,因为每次指定散列键“my_key”时,即使字符串值内容相同,也会在不同的内存位置创建不同的字符串实例!所以如果你有 100 个 my_hash['my_key'] 的实例,你就有 100 个字符串 'my_key' 的实例。符号 :my_key 不是这样。 :my_key 永远只有一个实例,无论您使用它多少次!
您应该在通常使用不可变字符串作为标识符的地方使用符号。
关于ruby - 无法掌握 Ruby 中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6725518/