Array TypeError:无法将Fixnum转换为String

我正在尝试使用数组,并正在阅读Steve Holzner撰写的“Begin on Ruby on Rails”一书。 我做了这个程序:

array = ['Hello', 'there', 1, 2] puts array[1] puts array[3] puts array.length array2 = Array.new puts array2.length array2[0] = "Banana" array2[1] = 6 puts array2[0] + " " + array2[1] puts array3.length 

它没有做太多,但是当我运行它时,我得到了错误

 arrays.rb:9:in `+': can't convert Fixnum into String (TypeError) from arrays.rb:9 

为什么我会收到此错误?

你不能添加一个字符串和一个整数( Fixnum ),在这种情况下你试图添加6到“香蕉”。

如果在第9行你做了这个:

 puts array2[0] + " " + array2[1].to_s 

你会得到:

 "Banana 6" 

array2[1]6 ,这是一个Fixnum。 它不知道如何将自己添加到一个字符串(在这种情况下是Banana 。如果你要将它转换为字符串,它将工作得很好。

 puts array2[0] + " " + array2[1].to_s 

该错误基本上是说你不能将array2[1] (值是一个数字,在这种情况下是一个类型的Fixnum )转换为String类型。 解决这个问题的方法是将类型转换为字符串 (这是出现错误的第9行):

 puts array2[0] + " " + array2[1].to_s 

array2 [1]。 to_s将数字转换为String类型。

我自己没试过,但尝试更换

 puts array2[0] + " " + array2[1] 

 puts array2[0] + " " + array2[1].to_s 

这是一种将FixNum表达式转换为字符串的方法,

 x=2 print (x+20).to_s + "\sbanannas" 

不知道你可以将FixnNum#to_s方法强加给那些parens。