TL; DR — Вопрос
ли { 'symbol name': 5 }
и { "symbol name": 5 }
действует и хорошо определен синтаксис рубин 2 для хэшей?Есть {'symbol name': "some value"} действительный синтаксис Ruby 2 для хэшей?
6 Условные обозначения для хэшей, 2 из них еще неизвестным
В Ruby 2, следующие Хэш буквенные обозначения эквивалентны:
{ :my_key => 5 }
{ my_key: 5 }
{ :'my_key' => 5 }
{ :"my_key" => 5 }
- Первая строка является общим Хэш буквальным обозначения (т.е. также работает для несимвольных клавиш), с литеральной записью символа по умолчанию для ключа.
- Вторая строка - это новая короткая нотация, введенная
Ruby 2Ruby 1.9 для хэшей с символами в виде ключей. - Третья строка - это общая буквальная буква Hash, с альтернативной символической записью символа для ключа. (Это альтернативное условное обозначение символа удобно, если вам нужно иметь пробелы или другие причудливые символы в ваших символьных именах.)
- Четвертая строка представляет собой небольшое изменение выше, что также допускает интерполяцию строк в имени символа.
В первые два нотации documented on the Core API page for Hash
. Нотация просто включает в себя альтернативную символическую нотацию символа (то есть documented in the Core API page for Symbol
) к первой нотации Хэша, поэтому это не совсем другое обозначение для хэш-литералов. То же самое касается третий обозначение. То, что литеральная нотация символов с одной кавычкой не упоминается на странице Symbol
Core API, не слишком беспокоит меня, поскольку она работает так, как я ожидал.
Но в последнее время я заметил следующие условные обозначения работы тоже, а также эквивалентно приведенным выше:
{ "my_key": 5 }
{ 'my_key': 5 }
Хотя это своего рода последовательный (и работает, как я ожидал, что я ожидал, что это быть действительным вообще) и, вероятно, полезно, я нахожу это достаточно замечательным, чтобы немного удивляться. Я не мог найти никакой документации по этому синтаксису, и этот синтаксис не просто построен путем подключения документированных обозначений в другие документированные обозначения, такие как третья и четвертая нотации выше. (Это больше похоже на «слияние» второй с третьей или четвертой нотации.) Таким образом, я задавался вопросом:
Является ли это это просто мой рубин переводчик (MRIruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
) быть хорошим о неопределенном синтаксиса, или это Я могу ожидать от любой реализации Ruby 2?
(Не уверен, имеет ли этот вопрос смысла, если это as Brian Shirai claims, что «Рубин Is What [MRI] Имеет ли».)
Этот синтаксис стал доступен в Ruby 2 – jollarvia
@jollarvia: Вы имеете в виду 2.2, 2.0 и 2.1 см. '{'S': v}' в качестве синтаксической ошибки. –
Вы можете рассмотреть возможность добавления примеров этого нового синтаксиса в документы. http://documenting-ruby.org/ - полезный ресурс. – cremno