16

我遇到了一个“无法将 Fixnum 转换为 String (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​​ 技能。

4

3 回答 3

49

当对象是方法中的操作数时,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!"
于 2013-02-15T13:18:51.053 回答
5

尝试使用字符串插值,如下所示:

puts "Yeah #{favenum} is nice enough but #{better} is bigger and better by far! Think on."
于 2013-02-15T13:19:43.723 回答
2

根据您正在遵循的教程

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.'

在初学者水平上产生“正确”的结果。

于 2013-09-17T08:26:08.377 回答