Ruby哈希相当于JavaScript的对象初始化程序ES6的简写

chr*_*ris 11 javascript ruby hash shorthand ecmascript-6

在JavaScript ES6中,我们可以创建对象,其中变量名称变为如下所示的键:

> let a = 'aaa'
'aaa'

> let b = 'bbb'
'bbb'

> { a, b }
{ a:"aaa", b:"bbb" }
Run Code Online (Sandbox Code Playgroud)

Ruby有与哈希相同的东西吗?

澄清:显然这个问题涉及速记符号.我找{a,b}{a:a,b:b}.

Pas*_*cal 12

不,没有这样的简写符号.

  • 我希望有,但是...... :) (12认同)

Chr*_*van 5

简短的回答没有。

更长的答案

前田修吾在2015年为此提出了一个补丁(您可以在此处阅读有关此问题的详细信息:https : //bugs.ruby-lang.org/issues/11105)。

当时Matz还没有想到,但是将来可能会改变主意。

同时,您可以使用Shugo的补丁程序并为自己的Ruby版本打补丁,以自己拥有ES6哈希字面量!

要修补Ruby以添加哈希,请执行以下操作:

1)从此处下载补丁程序https://gist.github.com/thechrisoshow/1bb5708933d71e0e66a29c03cd31dcc3(当前适用于Ruby 2.5.0)

2)使用RVM安装该Ruby的补丁版本。即

rvm install 2.5.0 -n imphash --patch imphash.patch
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用RVM选择Ruby的修补版本:

rvm use 2.5.0-imphash
Run Code Online (Sandbox Code Playgroud)

(Imphash是隐式哈希的缩写)