2017-09-30 122 views
0

我的測試代碼表示如下:紅寶石:輸入的返回值來

d001 = SimpleDate.new(2016, 1, 4) 
assert(d001.year == 2016) 

當一年的投入是2016我想這個測試正常拿回2016

我的類代碼說以下

class SimpleDate 
    def initialize(year, month, day) 
    @year = year 
    @month = month 
    @day = day 
    end 
end 

還有什麼我必須投入到能夠把 SimpleDate.new(2016,1,4).year == 2016,而不是從我的課得到一個錯誤?我希望@year會做到這一點。

+1

是什麼錯誤說你需要什麼? –

回答

2

添加attr_reader一年。

class SimpleDate 
    attr_reader :year 

    def initialize(year, month, day) 
    @year = year 
    @month = month 
    @day = day 
    end 
end 

這是一樣的

def year 
    @year 
end 
+0

Bill:[Module :: attr_reader](https://ruby-doc.org/core-2.4.0/Module.html#method-i-attr_reader)是創建類時調用的類方法。 'attr_reader:year'等同於'self.attr_reader(:year)',因爲'self'等於'SimpleDate',與'SimpleDate.attr_reader(:year)'相同。從文檔注意,你可以改爲寫'attr_reader'year'',但是你不會看到完成。 –

+0

謝謝熊熊。這工作!非常感謝@CarySwoveland你是什麼意思「不會看到這樣做?」由於一個額外的字符,人們傾向於不喜歡那種語法? –

+0

我的快樂比爾;) – Ursus