我正在试验数组,并且正在阅读Steve Holzner的书“Beginning Ruby on Rails”。我制作的节目:Array TypeError:无法将Fixnum转换为字符串
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
为什么会出现这个错误?
打败我秒。 :) – 2012-03-13 03:26:57
我想在这里添加一个错误是强类型语言的一个特性,其中Ruby就是一个例子。 PHP是一种弱类型语言,它会允许这种欺骗行为。 – bernie 2012-03-13 03:30:22
@bernie它更多的是Ruby类型强制规则的直接结果,而不是它的强类型。例如,Ruby中的Float + Fixnum是合法的,因为Ruby知道如何强制一种类型到另一种类型。你实际上可以重新打开Fixnum并添加一个'coerce'方法,这个方法也会使String + Fixnum合法。 – 2012-06-14 16:58:15