1
我有這個方法的類,它應該返回枚舉器,如果沒有給出塊或枚舉,如果給出。這只是模擬Array.each
方法。枚舉工作正常。在自己的每個方法中返回枚舉器
def each
if (block_given?)
0.upto(size - 1) do |x|
yield @data[x]
end
end
end
並且測試機智驗證碼:
it "should return Enumerator" do
res = subject.each
res.class.should eq Enumerator
res.to_a.should eq data
end
錯誤是 「故障/錯誤:res.class.should EQ枚舉」
禁止使用@data。每個(或收集,地圖等),我必須自己實現它。我已經花了大約兩個小時在互聯網上,我還沒有得到如何去做,因爲在每個例子中,他們只是委派「每個」功能已經完成類如Array ... 或者他們只是不在乎返回「枚舉器「沒有給出任何阻止。
SOLUTION:
def each
if (block_given?)
0.upto(size - 1) do |x|
yield @data[x]
end
self
else
to_enum(:each)
end
end
這是工作,tx :)。 – libik