我刚开始学习Ruby并且不确定导致错误的原因。我正在使用ruby 1.9.3
puts 'What is your favorite number?'
fav = gets
puts 'interesting though what about' + ( fav.to_i + 1 )
in `+': can't convert Fixnum into String (TypeError)
在我最后一次发表声明中,我认为它是字符串和计算的简单组合。我仍然这样做,但只是不明白为什么这不起作用
答案 0 :(得分:8)
在Ruby中,您通常可以使用“字符串插值”而不是将字符串添加(“连接”)
puts "interesting though what about #{fav.to_i + 1}?"
# => interesting though what about 43?
基本上,#{}
内的任何内容都会被评估,转换为字符串,并插入到包含的字符串中。请注意,这仅适用于双引号字符串。在单引号字符串中,您将获得完全放入的内容:
puts 'interesting though what about #{fav.to_i + 1}?'
# => interesting though what about #{fav.to_i + 1}?
答案 1 :(得分:3)
( fav.to_i + 1 )
返回一个Integer,ruby不进行隐式类型转换。您必须通过执行( fav.to_i + 1 ).to_s
来自行转换它才能将其添加到字符串中。