2010-07-26 61 views

回答

3

字符串是可變的,因此每次引用"foo" ruby​​創建一個新對象。你可以通過在irb中調用"foo".object_id來測試。另一方面,符號不是,所以每次引用:foo時,ruby都會返回相同的對象。

關於「風格」和「一致性」,您始終可以使用hash.symbolize_keys!作爲接收的json數據,這會將所有字符串鍵轉換爲符號。反之亦然 - hash.stringify_keys!使它們再次成爲字符串。

+0

如果你有什麼嵌套哈希?我不認爲symbolize_keys!或stringify_keys!將更新那些 – apiary 2010-07-26 04:33:00

+1

@apiary,編寫自己的'symbolize_keys'遞歸版本,並將其混合到'Hash'類中。 – 2010-07-26 04:52:55

0

沒有規定說散列鍵應該是一個符號。

在Rails中將符號作爲約定被看作是一個慣例...... Rails使得傳遞哈希大量使用允許多個參數,並且這些哈希中的鍵通常是表示它們的符號方法調用的預期/允許參數。

相關問題