Ruby 裡面有個很奇怪的東西,叫做符號 Symbol ,他的寫法是 :hello ,字串前面加上冒號,初心者應該很多人會呆住,不知道他是什麼…
簡單來說
符號 Symbol 是有名字的物件,不能變動內容,且方法少,但效率快。
字串 String 的內容可以變動,且方法多,但效率差。
有關效率問題,符號 Symbol 只會產生單一的 object id,然後字串 String 每次都會產生新的 object id ,所以字串的效率比較差,比較佔記憶體空間。可以使用 .to_s 把符號 Symbol 轉為 字串 String 。
因為符號 Symbol 的只會產生單一的 object id 的特性,所以很適合做為 hash 的 key ,因為指向記憶體的同一個位置。
參考資料
1.https://kaochenlong.com/2016/04/25/string-and-symbol/
2.https://medium.com/@anneju/ruby-%E4%B8%96%E7%95%8C%E8%A3%A1%E7%9A%84%E7%AC%A6%E8%99%9F-symbol-%E6%98%AF%E4%BB%80%E9%BA%BC-%E5%AE%83%E8%B7%9F%E5%AD%97%E4%B8%B2%E5%8F%88%E6%9C%89%E4%BB%80%E9%BA%BC%E4%B8%8D%E5%90%8C-6d66b37d5bcf