是”符号名称’:“某些值”} Hashes的有效Ruby 2语法?
TL; DR – 问题
是{‘symbol name’:5}和{“symbol name”:5} Hashes的有效且定义良好的Ruby 2语法? 哈希的6个符号,其中2个未知 在Ruby 2中,以下Hash文字符号是等效的: { :my_key => 5 } { my_key: 5 } { :'my_key' => 5 } { :"my_key" => 5 } >第一行是通用Hash文字符号(也适用于非符号键),使用键的默认符号文字表示法. 前两个符号是documented on the Core API page for 但最近我注意到以下符号也起作用,并且也等同于上面的符号: { "my_key": 5 } { 'my_key': 5 } 虽然它有点一致(并且像我预期的那样工作,如果我希望它有效,并且可能有用),我发现这非常值得惊讶.我找不到关于这种语法的任何文档,并且这种语法不仅仅是通过将记录的符号插入其他记录的符号(如上面的第三和第四种符号)来构建的. (这更像是将第二种与第三种或第四种符号“合并”.)因此我想知道: 这只是我的Ruby解释器(MRI ruby?? 2.2.1p85(2015-02-26修订版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,它于0700年登陆.这意味着它在2.1甚至更旧版本中的语法无效.它还意味着声称实现2.2的实现必须支持它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |