我一直在紅寶石編程一段時間了,並且聽說使用符號訪問哈希中的值是比使用字符串更好的做法。紅寶石和廚師在哈希差異
default[:key] = value
over
default['key'] = value
我一直在做一個廚師項目,並注意到廚師食譜使用第二種方式來訪問哈希值(通過字符串)。經常通過符號替代訪問不起作用!
所以我想我的問題是兩部分,我應該停止使用符號和使用字符串訪問器到處?爲什麼使用符號不起作用?
我一直在紅寶石編程一段時間了,並且聽說使用符號訪問哈希中的值是比使用字符串更好的做法。紅寶石和廚師在哈希差異
default[:key] = value
over
default['key'] = value
我一直在做一個廚師項目,並注意到廚師食譜使用第二種方式來訪問哈希值(通過字符串)。經常通過符號替代訪問不起作用!
所以我想我的問題是兩部分,我應該停止使用符號和使用字符串訪問器到處?爲什麼使用符號不起作用?
T.L; D.R。儘管仍然在使用,但不鼓勵使用符號訪問屬性,以支持字符串。
在foodcritic(棉短絨)從廚師報價拉蒙特granquist問題here
廚師實現糖化醪所有符號內部轉換爲字符串
官方recommendation in docs是使用字符串。
要完成廚師屬性概述,您還可以通過實例方法I.e訪問它們。 node.key.subkey
但這種方法已被棄用,並將在短期到中期被刪除。
符號鍵不會被棄用,也不會被刪除。這是正在等待刪除的方法樣式訪問。 – coderanger
我感覺我忘記了一些東西;)感謝@coderanger。希望編輯還是應該這樣做? – Tensibai
爲了它,我在手機上的時刻:) – coderanger
請參閱[此評論](https://github.com/acrmp/foodcritic/issues/86#issuecomment-74186035)關於foodcritic規則。無論如何,Chef Mashes訪問器將符號轉換爲字符串,因此請使用字符串。不工作的符號通常是當有一個操作符時(通常是''在其中)。 – Tensibai
簡單的舊Ruby中的符號與C中的字符串常量類似。使用它們時,它們只會有效地存在一次。如果你有大量的,它可以幫助節省內存。但是,當使用字符串時,每次聲明它們時都是不可變的實例。如果它們被用作常量,建議[freeze](https://ruby-doc.org/core-2.3.1/Object.html#method-i-freeze)字符串。要向Ruby解釋器聲明帶有空格或其他保留標記的符號,請將它們聲明爲「:」虛線符號「'。 – Sean
謝謝!這真的揭示了爲什麼建議在字符串上使用符號的原因。 – skylerto