to_enum
또는 enum_for
메서드에 대상 메서드가 제공되지 않으면 루머의 설명서에 따라 열거 자 개체에 each
메서드가 사용됩니다 (열거하도록). 이제Ruby의 Enumerator 객체는 내부 반복자를 통해 외부에서 반복 처리됩니다.
o = Object.new
def o.each
yield 1
yield 2
yield 3
end
e = o.to_enum
loop do
puts e.next
end
열거 객체가 같은 each
방법 모양에 대한 호출을 어떻게, next
가 호출 될 때 응답하도록 each
방법을 사용하는 점을 감안 할 때마다의가 예를 들어, 다음 원숭이 패치와 열거 보자 next
이 호출됩니까? Enumeartor 클래스가 o.each
의 모든 내용을 미리로드하고 열거 용 로컬 복사본을 만드나요? 또는 enumeartor에 next
이 호출 될 때까지 각 산출량 명세서에서 연산을 정지시키는 일종의 Ruby 매직이 있습니까?
내부 복사본이 만들어지면 딥 복사본입니까? 외부 열거에 사용할 수있는 I/O 객체는 어떻습니까?
저는 Ruby 1.9.2를 사용하고 있습니다.
를, 당신은 '인라인 코드 포맷을 텍스트 주변에 역 따옴표 (\를') 사용)' –
muchas 그라시아을! 다음 번에는 그 점을 명심하십시오. –