이 메서드는 클래스가 있으므로 블록을 지정하지 않으면 열거 형을 반환하고 지정된 경우 열거합니다. 그것은 단지 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를 사용하는 것이 금지되어 있습니다. 각 (또는 수집,지도 등), 나는 그것을 직접 구현해야합니다. 나는 인터넷에서 약 2 시간을 보냈고 모든 예제에서 배열과 같은 이미 완료된 클래스에 "각"함수를 위임하기 때문에 여전히 수행 방법을 모르겠다. 아니면 그냥 "열거 자 "주어진 블록에 대해.
해결책 :
def each
if (block_given?)
0.upto(size - 1) do |x|
yield @data[x]
end
self
else
to_enum(:each)
end
end
에서 권장하는대로 다음을 첫 번째 줄로 사용할 수 있습니다. – libik