【问题标题】:What's the difference between a hash with => and : [duplicate]带有 => 和的哈希有什么区别:[重复]
【发布时间】:2021-04-06 02:48:56
【问题描述】:

我使用一个特定的库,我可以在其中使用这样的哈希传递变量:

{ 'username' = > 'John'}

但是当我尝试使用这样的哈希传递变量时:

{ 'username': 'John' }

它不起作用。我一直认为=>: 的旧语法,但似乎真的有区别。

使用代码:Liquid::Template.parse(template).render!(variables).html_safe

您能否解释一下区别并告诉我如何将这样的哈希:{ 'username': 'John' } 转换为 { 'username' = > 'John'} 演示文稿?

【问题讨论】:

    标签: ruby


    【解决方案1】:
    { some_arbitrary_expression(some_argument, arg2) => another_arbitrary_expression(arg) }
    

    Hash 文字的通用 语法。 任何响应hasheql? 的对象 都可以用作Hash 中的键。

    { some_valid_symbol: arbitrary_expression(arg1, arg2) }
    

    Symbol 键的“新式”Hash 文字语法。

    我一直认为=>: 的旧语法,但似乎确实有区别。

    我不确定你是从哪里学到的,但我很想知道,这样我就可以警告其他人有关此来源的信息。这从来都不是真的,目前没有计划让它成为现实,而且它可能永远不会成为现实。据我所知,官方文档、RubySpec 或任何知名书籍(The Ruby Programming Language、Programming Ruby)中都没有提到这一点。

    您能否解释一下区别并告诉我如何将这样的哈希:{ 'username': 'John' } 转换为 { 'username' = > 'John'} 演示文稿?

    您可以通过猴子修补Hash#to_sHash#inspect 来更改HashString 表示,但尚不清楚这会给您带来什么。

    如果您使用的方法需要一个 Hash,其键为 Strings,而您将其传递一个 Hash,其键为 Symbols,则更改 HashString 表示为不会帮你的。您需要修复源并确保您的密钥是Strings。

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 2011-05-24
      • 2023-03-04
      • 2011-08-31
      • 2016-03-20
      • 2012-09-12
      • 2012-04-03
      • 2013-08-22
      • 2010-10-02
      相关资源
      最近更新 更多