2016-05-21 3 views
4

В JavaScript ES6 мы можем создавать объекты, где имена переменных становятся ключами, как это:рубин хэш-эквивалент инициализатора объекта в JavaScript ES6 обсчитывать

> let a = 'aaa' 
'aaa' 

> let b = 'bbb' 
'bbb' 

> { a, b } 
{ a:"aaa", b:"bbb" } 

ли Руби есть что-то эквивалентное для хэшей?

Уточнение: Очевидно, что этот вопрос касается сокращенного обозначения. Я ищу {a,b} не {a:a,b:b}.

ответ

5

Нет, таких сокращенных обозначений нет.

+4

Я хотел было, хотя ... :) –

2

Короткий ответ no.

Более длинный ответ

Shugo Maeda предложил патч для этого в 2015 году (вы можете прочитать подробную информацию об этом здесь: https://bugs.ruby-lang.org/issues/11105).

В то время, когда Мац не входил в эту идею, но, возможно, захочет изменить свое мнение в будущем.

В то же время - вы можете использовать патч Shugo и исправить свою собственную версию Ruby, чтобы иметь собственные лирические листы ES6!

Чтобы залатать рубин, чтобы добавить хэши сделать следующее:

1) Скачать патч здесь https://gist.github.com/thechrisoshow/1bb5708933d71e0e66a29c03cd31dcc3 (в настоящее время работает с Руби 2.5.0)

2) Используйте РВМ установить исправленную версию этот Рубин. т.е.

rvm install 2.5.0 -n imphash --patch imphash.patch 

Затем вы можете использовать RVM для выбора исправленной версии Ruby:

rvm use 2.5.0-imphash 

(Imphash коротка для неявного хэш)

Смежные вопросы