问题描述
我正在尝试运行以下程序,该程序将根据用户输入发出简单的问候语。但是,每当我运行代码时,我都会收到以下消息:
语法错误,意外的 tSTRING_BEG,期待 do 或 '{' 或 '('
我尝试用双引号替换单引号,并且还尝试在变量名周围放置 '()'。
puts 'First name: '
first_name = gets.chomp
puts 'Middle name: '
middle_name = gets.chomp
puts 'Surname: '
surname = gets.chomp
puts "Greets to you," + first_name + middle_name + surname "! Welcome to Valhalla!"
解决方法
@eux 已经对您示例中的语法错误给出了正确答案。
我只想展示另一种生成预期输出的方法。使用字符串插值而不是字符串连接是一种常见的 Ruby 习语。使用字符串插值,您可以像这样生成输出
puts "Greets to you,#{first_name} #{middle_name} #{surname}! Welcome to Valhalla!"
字符串插值有很多优点——如本answer and its comments中所述。根据您的问题,优点是:
- 它更短
- 在哪里放置空格更清楚
- 整体上更易于阅读和理解
您在最后一行的 +
之前错过了 ! Welcome to Valhalla!
:
puts "Greets to you," + first_name + middle_name + surname + "! Welcome to Valhalla!"