Ruby错误:"没有将Fixnum隐式转换为String"

时间:2015-10-02 19:15:46

标签: ruby

我是Ruby的初学者,练习循环和if语句。

我的课程工作有点偏离轨道,并尝试运行以下代码:

puts("Enter your age!")
age = gets.to_i
again = "Try again!"

while age <= 100 

if age == 0 
  puts("You are very very young. " + again)
  age = gets.to_i

elsif age >= 1 && age <= 5
  puts("You are quite small. Though you are breathing, you may not    understand this. " + again)
  age = gets.to_i
else 
  puts("You are a capable of reading " + again)
  age = gets.to_i
end 
end 
puts("Your age," + age + " is a good one")

当我运行它时,系统会提示我输入年龄。 如果我输入的年龄&lt; = 100,一切都按照代码运作。 如果没有,我收到错误:

  

rehearsal.rb:20:+': no implicit conversion of Fixnum into String (TypeError) from rehearsal.rb:20:in&#39;

其他StackOverflow答案(解决此错误消息)我读到的建议错误是误用了&#34; to_i&#34;方法。我确保包含它,我的错误仍在这里。

我的错误在哪里?

1 个答案:

答案 0 :(得分:2)

在Ruby中,添加字符串的+方法不适用于整数。在您的示例中,age变量是一个整数。如果您习惯使用JavaScript,这似乎有点奇怪。

您需要使用string interpolation

puts("Your age, #{age} is a good one")

这很有效。