我想在深入rails開發之前深入學習ruby,但是我有一些學習類的問題。我似乎無法理解爲什麼以下不起作用。Ruby初學者課題
#point.rb
class Point
attr_accessor :x, :y
def initialize(p = [0,0])
@x = p[0]
@y = p[1]
end
end
#shape.rb
require_relative 'point.rb'
class Shape
attr_accessor :points
def initialize *the_points
for p in the_points
@points.append Point.new(p)
end
end
end
s = Shape.new([3,2])
puts s.points
當我調用該函數時,我得到一個NilClass的無方法錯誤,我假設它指的是@point.append。
現在我發現了一個不同的錯誤:'shape.rb:11:在塊在初始化:未定義的方法 '追加' 的[]:陣列(NoMethodError)' 這對我來說真的很讓人困惑,因爲我認爲這個數組在追加時會很好。如果這很重要的話,我正在使用紅寶石1.9.2。 – tshauck 2011-05-02 17:31:38
@tshauck - 你可以使用'push'或'<<'來替代,Array上沒有'append'方法。 – McStretch 2011-05-02 17:33:35
嗯......這有點令人驚訝,但我沒有看到Array#追加到Ruby 1.9.2中。您應該使用<<(例如,@points << Point.new(p)) – rmk 2011-05-02 17:37:06