'+'不能将Fixnum转换为字符串(TypeError)
问题描述:
我碰到'不能将Fixnum转换为String(TypeError)'错误,虽然它似乎很简单,我不确定如何解决它。我认为我的逻辑是合理的 - 将输入的字符串变量转换为整数,然后执行基本操作 - 但显然我错过了一些关键信息。'+'不能将Fixnum转换为字符串(TypeError)
puts 'What is your favourite number?'
favenum = gets.chomp
better = favenum.to_i + 1
puts 'Yeah '+favenum+' is nice enough but '+better+' is bigger and better by far! Think on.'
是否尝试过寻找一个答案,但同样的错误了也有远远超出目前我的基本的红宝石技能的例子。
答
Ruby(与某些其他语言不同)在String#+
方法中的操作数时不会将对象转换为字符串。要么转换为手动字符串:
puts 'Yeah ' + favenum.to_s + ' is nice enough but ' + better.to_s + ' is bigger and better by far!'
或使用字符串插值(注意双引号):根据教程
puts "Yeah #{favenum} is nice enough but #{better} is bigger and better by far! Think on."
答
试着用串插,像这样您正在关注
puts 'Please enter your favourite number: '
number = gets.chomp
imp = number.to_i + 1
puts 'I\'d say '.to_s + imp.to_s + ' is a much better number.'
在初学者级别生成“正确”结果。
答
:
puts "Yeah #{favenum} is nice enough but #{better} is bigger and better by far!"
所以我的代码中的错误是在变量的输出中,而不是在上面的行中对它们进行操作?我认为favenum最初是作为一个字符串存储的吗?也许我正在遵循的教程(http://pine.fm/LearnToProgram/?Chapter=04)并非全部被破解为......? – 2013-02-15 13:26:36
@DanSolo:确实,'favenum'确实是一个字符串,不应该导致错误。它是导致它的整数“更好”变量。 – 2013-02-15 13:30:16
太好了,谢谢。现在你提到它,我可以逻辑地看到为什么在更好的整数时使用'+ better +'会导致错误。感谢您解决它的其他选项。我的旅程继续... – 2013-02-15 13:37:55