x = "hello" " world".to_sym
puts x.class
Это работает и позволяет мне объединить две строки в символ, производя вывод:Каков порядок операций с этим конкатенацией?
Symbol
Но если я изменить его немного, чтобы использовать + вместо пробела отделяя приветствия и мировые строки , я получаю сообщение об ошибке:
x = "hello" + " world".to_sym
puts x.class
Это производит следующее сообщение об ошибке - Я думаю, это потому, что он пытается «бросить» в «мир» .to_sym перезвонить в строку перед конкатенация его на «привет» строка :
in `+': can't convert Symbol into String (TypeError)
Мне интересно Что делает первый пример работы? Кто-нибудь знает, что такое порядок операций? Я подозреваю, что две строки фактически рассматриваются как одна, что пространство между ними игнорируется, и они конкатенируются до того, как вызывается метод to_sym. На самом деле я бы ожидал, что он будет работать не иначе, как второй пример, потому что я думал, что to_sym будет вызван в «мировой» строке, прежде чем предпринимаются попытки присоединиться к содержимому «привет» и «мир».