gpt4 book ai didi

ruby - 是{ 'symbol name' : "some value" } valid Ruby 2 syntax for Hashes?

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:13 24 4
gpt4 key购买 nike

TL;DR——问题

{ 'symbol name': 5 }{ "symbol name": 5 } 是否有效且定义明确的 Ruby 2 哈希语法?

6 种哈希符号,其中 2 种未知

在 Ruby 2 中,以下 Hash 文字符号是等效的:

{ :my_key => 5 }
{ my_key: 5 }
{ :'my_key' => 5 }
{ :"my_key" => 5 }
  1. 第一行是通用的哈希文字表示法(也适用于非符号键),键使用默认的符号文字表示法。
  2. 第二行是Ruby 2引入的新的简写符号Ruby 1.9用于以符号为键的哈希。
  3. 第三行同样是通用的 Hash 字面量表示法,键带有替代的 Symbol 字面量表示法。 (如果您需要在符号名称中包含空格或其他花哨的字符,则此替代符号文字表示法非常方便。)
  4. 第四行是上面的细微变化,它也允许在符号名称中进行字符串插值。

前两个 符号是documented on the Core API page for Hash . 第四个 表示法只是将替代符号文字表示法(即 documented in the Core API page for Symbol )插入到第一个哈希表示法中,因此对于哈希文字来说它并不是真正不同的表示法。 third 符号也是如此。 Symbol Core API 页面上没有提到单引号字符串 Symbol 文字符号并没有让我太在意,因为它看起来就像我期望的那样工作。

但最近我注意到以下符号也有效,并且也等同于上面的符号:

{ "my_key": 5 }
{ 'my_key': 5 }

虽然它有点一致(并且像我预期的那样工作,但我希望它完全有效)并且可能有用,但我发现它非常出色以至于有点惊讶。我找不到关于此语法的任何文档,并且此语法不仅仅是通过将已记录的符号插入其他已记录的符号(如上面的第三和第四个符号)来构建的。 (这更像是将第二个符号与第三个或第四个符号“合并”。)因此我想知道:

这只是我的 Ruby 解释器吗 ( MRI ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]) 对未定义的语法很好,或者这是我可以从任何符合要求的 Ruby 2 实现中期望的行为?

(不确定这个问题是否有意义,如果是 as Brian Shirai claims 那就是“Ruby 就是 [MRI] 所做的”。)

最佳答案

{ :my_key => "my value" } 
{ my_key: "my value" }
{ :'my_key' => "my value" }
{ :"my_key" => "my value" }

以上行均未使用 2.x-only 语法。它们都是有效的 1.9 语法。 ( See demonstration .)

{ "my_key": "my value" }
{ 'my_key': "my value" }

那是 feature request #4276降落在2.2 .这意味着它在 2.1 甚至更旧版本中是无效语法。这也意味着声称实现 2.2 的实现必须支持它。

关于ruby - 是{ 'symbol name' : "some value" } valid Ruby 2 syntax for Hashes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31483296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com