Синтаксическая ошибка, неожиданный tIDENTIFIER, ожидаемый ключевое слово_do или '{' или '('
Я следую главе 14 "Изучай Руби трудный путь". Я сам напечатал то, что написано в уроке. Я даже попытался скопировать и вставить то, что есть в самом учебнике. Мой текстовый файл ex.rb имеет следующее:
user = ARGV.first
prompt = '> '
puts "Hi #{user}, I'm the #{$0} script."
puts "I'd like to ask you a few questions."
puts "Do you like me #{user}?"
print prompt
likes = STDIN.gets.chomp()
puts "Where do you live #{user}?"
print prompt
lives = STDIN.gets.chomp()
puts "What kind of computer do you have?"
print prompt
computer = STDIN.gets.chomp()
puts <<MESSAGE
Alright, so you said #{likes} about liking me.
You live in #{lives}. Not sure where that is.
And you have a #{computer} computer. Nice.
MESSAGE
В учебнике говорится, что я должен получить следующий вывод:
$ ruby ex14.rb Zed
Hi Zed, I'm the ex/ex14.rb script.
I'd like to ask you a few questions.
Do you like me Zed?
> Yes
Where do you live Zed?
> America
What kind of computer do you have?
> Tandy
Alright, so you said Yes about liking me.
You live in America. Not sure where that is.
And you have a Tandy computer. Nice.
Я получаю две ошибки. Вот они:
$ ruby ex.rb Zed
ex.rb:19: syntax error, unexpected tIDENTIFIER, expecting keyword_do or '{' or '
('
Alright, so you said #{likes} about liking me.
^
ex.rb:20: syntax error, unexpected keyword_in, expecting end-of-input
You live in #{lives}. Not sure where that is.
Есть идеи о том, что происходит?
1 ответ
Если взять файл из вашего вопроса, он тоже работает нормально для меня.
Тем не менее, когда я изменился puts <<MESSAGE
быть:
puts << MESSAGE
то есть с пробелом между << и MESSAGE я получаю именно вашу ошибку.
У вас должен быть какой-то символ в вашем файле в той позиции, который отсутствует при копировании / вставке файла сюда.