2012-11-05 3 views

답변

5

이 작동합니다 :

n = Enumerator.new do |y| 
    number = 1 
    loop do 
    y.yield number 
    number += 1 
    end 
end 

n.next #=> 1 
n.next #=> 2 
n.next #=> 3 
n.rewind 
n.next #=> 1 
+0

쿨, 감사합니다. 간단했다. – wrhall

+1

"yield는 열거 자 블록 내에서 변수를 정의해야합니다"라는 단어를 솔루션에 넣어야 할 수도 있습니다. 어떤 아이디어가 필요한 것일까 요? – tokland

+0

나는 이것이 의미가 있다고 생각한다. 되감기는 단지 블록의 처음부터 다시 시작해야한다. 블록 안의 초기 숫자를 정의하지 않으면 블록의 처음부터 다시 시작할 때 숫자가 변경되지 않습니다. – wrhall

관련 문제