【问题标题】:What's the difference between colon ":" and fat arrow "=>" [duplicate]冒号“:”和粗箭头“=>”有什么区别[重复]
【发布时间】:2012-01-02 04:25:44
【问题描述】:

Ruby 中冒号: 和粗箭头=> 有什么区别?或者什么时候用什么?

:foo => true
foo: true

【问题讨论】:

    标签: ruby syntax hash hashrocket


    【解决方案1】:

    后者是 1.9 中引入的新 Hash 语法。参见,例如:

    http://breakthebit.org/post/8453341914/ruby-1-9-and-the-new-hash-syntax

    这两行生成的哈希是相同的。

    【讨论】:

    • 这仅适用于键是符号的情况。如果你想要另一个对象作为键,你需要像以前一样的粗箭头。
    • 在这一点上,请注意 {"key": "value"} 将被静默转换为 {:key=>"value"} - 字符串将被转换为符号。如果你想要一个字符串键,使用{"key"=>"value"}
    【解决方案2】:

    语法是用来定义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 淘汰
    • @AndrewGrimm:那篇博文是过于戏剧化的废话。布拉格。别担心,我知道你已经知道了:)
    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 2019-06-30
    相关资源
    最近更新 更多