這是我的主要代碼。我使用rspec的陣列推紅寶石彈出
require_relative "rpn_calculator"
describe RPNCalculator do
let(:calculator) {RPNCalculator.new}
it "adds two numbers" do
calculator.push(1)
calculator.push(3)
calculator.plus
expect(calculator.value).to eq 4
end
這是我在rpn_calculator
class RPNCalculator
@arr=[]
@ans=0
def push(val)
@arr.push(val)
end
def plus
while @arr.size>=1 do
@[email protected][email protected]
end
end
def value
return @ans
end
end
代碼這是我得到的錯誤
RPNCalculator兩數相加 故障/錯誤:calculator.push( 1) NoMethodError: undefined method push' for nil:NilClass # ./rpn_calculator.rb:5:in
push' #./spec.rb:7:in'block(2 levels)in'
但我認爲推是陣列
哦thanx這工作:)但你能告訴我爲什麼他們需要在初始化方法? –
@Legendary_Hunter:我添加了解釋,爲什麼'initialize'方法需要更多的說明。 – Surya
@Legendary_Hunter對於當你在'initialize'(或任何方法定義)之外定義這些變量時會發生什麼,它們被定義在當前是'self'的對象上 - 'RPNCalculator'類 - 而不是* instances *類。 – Kimball