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