【发布时间】:2012-01-02 04:25:44
【问题描述】:
Ruby 中冒号: 和粗箭头=> 有什么区别?或者什么时候用什么?
:foo => true
foo: true
【问题讨论】:
标签: ruby syntax hash hashrocket
Ruby 中冒号: 和粗箭头=> 有什么区别?或者什么时候用什么?
:foo => true
foo: true
【问题讨论】:
标签: ruby syntax hash hashrocket
后者是 1.9 中引入的新 Hash 语法。参见,例如:
http://breakthebit.org/post/8453341914/ruby-1-9-and-the-new-hash-syntax
这两行生成的哈希是相同的。
【讨论】:
{"key": "value"} 将被静默转换为 {:key=>"value"} - 字符串将被转换为符号。如果你想要一个字符串键,使用{"key"=>"value"}。
语法是用来定义Hash键/值对的,区别取决于Ruby版本。
在 Ruby 1.8 和 Ruby 1.9 中均受支持
:foo => true
仅在 Ruby 1.9 中受支持
foo: true
如果您使用 Ruby 1.9 进行开发,您可能应该使用以下语法:
foo: true
因为这似乎是社区前进的方向。
【讨论】:
=> 将被弃用?
=> 将被弃用?我不记得有这样的事情。即使这是真的,它也会破坏任何对象都可以作为键的主要哈希功能。因此,如果发生这种情况,只有符号可以用作键!例如:{Object => Object} 将不再存在 [那是一种伪代码]。
=> 已被 peepcode.com/blog/2011/rip-ruby-hash-rocket-syntax 淘汰