Я изучаю Ruby с помощью codeacadamy.com, и текущее задание - создать хэш со списком фильмов. Так, будучи мной, первый фильм, который я поставил в было 300.Почему «300» .Intern действителен, но: 300 не
movies = {
300: 3,
titanic: 1,
joe_versus_the_volcanoe: 3
}
, и я заметил, что 300 бросил ошибку:
(ruby):1: syntax error, unexpected ':', expecting tASSOC
300: 3,
^
Это сделал много смысла, но потом я попытался с помощью строка.
puts "300".intern
puts "300".to_sym
puts :300
Первые два являются действительными символами и выводом 300 на экран, но последний выдает ошибку. Я понимаю, что 300 должен быть ошибкой, потому что он не начинается с допустимого символа метода (a-zA-Z_, насколько я знаю), но тогда что такое и .intern
, чтобы сделать "300"
действительным символом?
Возможные продублируйте из http://stackoverflow.com/questions/4281397/why-cant-i-use Синтаксис синтаксиса -an-integer-as-a-key-using-the-new-ruby-1-9-2-hash – TheConstructor
Не совсем, я понимаю, что его проблема была и на самом деле играла вокруг, делая почти то же самое, но я все еще не знаю, почему это позволит «300» .to_sym быть символом, так как символы должны начинаться с допустимых символов метода. –
Прочитайте первые 2 строки отсюда -http: //www.ruby-doc.org/core-2.1.0/Symbol.html –