想知道是否有人可以看到爲什麼我不能調用.modulo。我覺得就像我必須在課堂上稱Math一樣,但我不確定這是什麼情況。leap.rb找不到模誤差
的git:https://github.com/jbasalone/ja/tree/master/ruby/exercism.io/leap
錯誤:
test_leap_year(YearTest):
NoMethodError: undefined method `modulo' for nil:NilClass
/Users/jennyb/ja/ja/ruby/exercism.io/leap/year.rb:26:in `divbyfour?'
/Users/jennyb/ja/ja/ruby/exercism.io/leap/year.rb:17:in `leap?'
leap_test.rb:6:in `test_leap_year'
這是我的代碼:
class Year
def initialize(theyear)
@theyear = theyear
end
class << self
attr_reader :theyear
def initialize(theyear)
@theyear = theyear
end
def leap?(theyear)
divbyfour? && !acentury? || bcentury?
end
#private
def acentury?
theyear.modulo 100 == 0
end
def divbyfour?
theyear.modulo 4 == 0
end
def bcentury?
theyear.modulo 400 == 0
end
end
end
這是我對它運行測試:
require 'minitest/autorun'
require_relative 'year'
class YearTest < MiniTest::Unit::TestCase
def test_leap_year
assert Year.leap?(1996)
end
def test_non_leap_year
skip
refute Year.leap?(1997)
end
def test_non_leap_even_year
skip
refute Year.leap?(1998)
end
def test_century
skip
refute Year.leap?(1900)
end
def test_fourth_century
skip
assert Year.leap?(2400)
end
end
你不初始化年等級: Year.new(1996).leap? 你也不需要跳躍的參數?方法: def leap?(theyear) divbyfour? && !一個世紀? || bcentury? 結束 應改爲 def leap? divbyfour? && !一個世紀? || bcentury? 結束 – Giannis
如果我刪除了我得到的論據; test_leap_year(YearTest): ArgumentError:參數數量錯誤(1代表0) /Users/jennyb/code/training/ruby/leap/year.rb:21:in'leap?' leap_test.rb:6:'test_leap_year' –
對不起,我的評論不太清楚,我在下面發佈了一個答案,這對我很有用。希望能幫助到你! – Giannis