2010-07-26 63 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使得传递哈希大量使用允许多个参数,并且这些哈希中的键通常是表示它们的符号方法调用的预期/允许参数。

相关问题