我正在學習從一本書紅寶石基於Ruby 1.9,但目前我使用的是2.2紅寶石super關鍵字引發ArgumentError
我有兩個班(從書)
class Point
def initialize(x,y)
@x,@y = x,y
end
end
class Point3D < Point
def initialize(x,y,z)
super(x,y)
@z = z
end
end
然而,當我打電話給Point3D.new(0,1,2)
時,Ruby解釋器引發了一個ArgumentError
,它表示wrong number of arguments (3 for 2)
。
這究竟是爲什麼?
編輯
我省略說Point類是在另一個require
d文件。
我試着打電話給
require "./Point.rb"
point = Point.new(0,1)
puts point
其按預期工作
然後加入三維點類如過描述,並試圖打電話
require "./Point.rb"
class Point3D < Point
...
end
point1 = Point3D.new(0,1,2)
puts point1
這提高了引發ArgumentError。
如果我把這兩個類放在同一個文件(Point3D.rb)中,但是這個問題不會發生,但是如果我把Point3D類放在Point.rb中,錯誤依然存在。
2.1.2和2.2.0似乎都沒有問題。只能看到兩種情況,你會得到這個錯誤 - 超級被調用沒有參數和初始化3個參數點。我的代碼中的 – osman
很明顯,我沒有這樣做。 – fra9001
2.1,2.2 @linux:不可重現。 – mudasobwa