2014-10-03 3 views
0

Как использовать новый стиль хэша с цифрами в качестве ключей?Как использовать новый стиль хэша с цифрами?

у меня есть:

{ 1 => "terrible", 3=> "OK", 5 => "awesome" } 

Но я хотел бы знать, как писать их с помощью новой хэш-стиль.

+3

Вы не можете. Для числовых клавиш нет такого понятия, как «новый синтаксис хеширования». Ruby представила новый синтаксис явно для использования символов в качестве ключей. Любое количество чтений должно было дать вам этот ответ. – meagar

+0

@meagar: * Определенные * символы, вы не можете использовать нотацию в стиле JavaScript с такими символами, как ': $ set',': '0'', ... Да, это мой питомец. –

+0

Да, это зарезервировано для ключей, которые являются символами, но могли ли дизайнеры этой функции сделать ее более общей? Предположим, что 'key: value' были интерпретированы как' {key => value} 'if' key.is_a? Object => true' и как '{: key => value}' if 'key.is_a? Объект поднял исключение «неопределенная локальная переменная или метод». (Что относительно 'key.is_a? Object => false'?). Не выступать, просто обдумывая. –

ответ

1

Ваш ключ - это номер, а не символ. С новым стилем хэша {key: value} ключ всегда должен быть символом, поэтому вы не можете использовать новый хеш-стиль с вашим хэшем, потому что ваши клавиши начинаются с цифр, а не символов. Смотрите «», где прямо говорится:

В версии 1.9 Рубин представил новый синтаксис для хэш-литералов , чьи ключи являются символами.

+1

Технически символы * могут * начинаться с числа; ':" 123 "и' "123" .to_sym' создают символ, состоящий только из цифр. – meagar

+0

Что-то вроде a =: 1 приведет к ошибке. То, что вы описываете, это строковый тип данных, а не число. – daremkd

+0

Вместо того, чтобы говорить «эту ссылку», используйте что-то описательное для текста привязки. См. Раздел «[Текст ссылки] (http://www.w3.org/TR/WCAG10-HTML-TECHS/#link-text)» и «[Не использовать» нажмите здесь «как текст ссылки») (http://www.w3.org/QA/Tips/noClickHere) « –

1

У вас нет, чтобы использовать новый синтаксис, вы должны использовать подмножество действительных символов. Числа не таковы, и, как указывает Му, существуют и другие ограничения.

+0

Неправильно. ': $ set' и': @ pancakes' являются допустимыми символами, но вы не можете сказать '$ set: ...' или '@pancakes: ...'. –

+0

@muistooshort Mm да, хорошо пункт. –