如果使用符號1我爲什麼要使用一個字符串)可以節省內存,2)具有更好的訪問時間爲什麼即使使用字符串的哈希值,如果符號存在
我看到有時字符串用於有時候符號的代碼。爲什麼你會選擇帶符號的所有優點的字符串?
好吧,您的訪問鍵通常不會是字符串,因此您始終可以鍵入鑄件。但是,那麼爲什麼演員不會隱含地發生?
如果使用符號1我爲什麼要使用一個字符串)可以節省內存,2)具有更好的訪問時間爲什麼即使使用字符串的哈希值,如果符號存在
我看到有時字符串用於有時候符號的代碼。爲什麼你會選擇帶符號的所有優點的字符串?
好吧,您的訪問鍵通常不會是字符串,因此您始終可以鍵入鑄件。但是,那麼爲什麼演員不會隱含地發生?
有不同的權衡,
爲什麼?
在Ruby 2.2符號未被垃圾收集之前,處理無限制的密鑰顯然會導致內存泄漏。但即使車庫收藏,仍然需要「實習」所有字符串輸入以將其轉化爲符號,這是一項巨大的成本。因此,如果代碼從文本文件或Web中消耗字符串,只使用字符串鍵可以是最聰明的。
我看到有時使用字符串,有時使用符號的代碼。爲什麼你會選擇帶符號的所有優點的字符串?
在Ruby 2.2中添加了Symbol GC之前,在運行時生成符號會導致長時間運行的應用程序發生內存泄漏。使用字符串是一種避免這種記憶問題並獲得gc的方法,它圍繞着ruby生態系統。通過凍結字符串支持,在某些時候符號和字符串將是相同的。
好吧,您的訪問鍵通常不會是字符串,因此您總是可以輸入鑄件。但是,那麼爲什麼演員不會隱含地發生?
散列將對象映射到對象。這個:
{"a"=>1, :a=>1}
是一個有效的散列。
如果您想隱式投射,您可以使用ActiveSupport中的HashWithIndifferentAccess。
當引用鍵的東西總是以字符串開頭時,我認爲值得把它們保存爲字符串。另外,我最近不得不使用整數作爲鍵。他們無法作爲符號投射(據我所知)。 –
擁有一個數字作爲密鑰實際上是一個好點 – Michael
你知道密鑰可以是任何東西,對吧?類,字符串,數組,哈希,符號,特效,...爲什麼要爲字符串做一個特殊的例外? –