Ответ 1
Попробуйте сами
"Lord of the rings".to_sym
#=> :"Lord of the rings"
Я создаю хеш файл Ruby для хранения имен фильмов.
Когда хеш-ключи являются строками, содержащими пробелы, они работают нормально.
Как в:
movies = {"Avatar" => 5, "Lord of the rings" => 4, "Godfather" => 4}
Теперь я пытаюсь заменить использование строк символами:
movies = {Avatar: 5, Lord of the rings: 4, Godfather: 4}
Очевидно, что это не работает.
Как Ruby обрабатывает пробелы в именах символов?
Попробуйте сами
"Lord of the rings".to_sym
#=> :"Lord of the rings"
Я не уверен, почему вы хотите использовать символы, когда хотите пробелы в значениях ключа, но вы можете это сделать. Вы просто не можете сделать это, используя синтаксис <symbol>: <value>
...
{:Avatar => 5, :"Lord of the rings" => 4, :Godfather => 4}
Чтобы создать символ с пробелами, введите двоеточие, за которым следует строковая строка. Для вашего примера вы должны ввести:
movies = {:Avatar => 5, :'Lord of the rings' => 4, :Godfather => 4}
Поздно к партии, но другой способ обойти это - сделать следующее:
movies = Hash.new
movies["the little mermaid".to_sym] = 4