개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.01 16:03

IteratorIterator::getInnerIterator에 대한 이해를 구합니다.

목록
  • CDN광신도 1일 전 2025.08.01 16:03
  • 5
    1
저는 IteratorIterator에 대해 공부하고 있습니다. IteratorIterator는 Iterator를 감싸는 Iterator로, 내부 Iterator를 관리하는 getInnerIterator 메소드를 제공합니다. 그러나 getInnerIterator 메소드의 실제 동작 방식에 대해 잘 이해하지 못하고 있습니다.

getInnerIterator 메소드는 내부 Iterator를 반환하는 것처럼 보이지만, 실제로는 새로운 Iterator를 반환하나요? 아니면 내부 Iterator의 복사본을 반환하나요? 내부 Iterator의 상태가 바뀌더라도 getInnerIterator 메소드가 반환한 Iterator의 상태도 바뀌나요?

혹시 이에 대한 설명이나 예제를 알려주실 수 있으세요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    IteratorIterator의 getInnerIterator 메소드는 내부 Iterator의 복사본을 반환하지 않고, 실제 내부 Iterator 자체를 반환합니다.

    getInnerIterator 메소드는 내부 Iterator를 반환하기 때문에, 내부 Iterator의 상태가 바뀌면 getInnerIterator 메소드가 반환한 Iterator의 상태도 바뀝니다.

    예를 들어, 내부 Iterator가 현재 1번째 요소에 위치해 있다면, getInnerIterator 메소드가 반환한 Iterator도 1번째 요소에 위치하게 됩니다.

    이러한 특성은 IteratorIterator가 내부 Iterator를 관리하는 역할을 하기 때문에 유용합니다.

    예제를 통해 이해를 돕겠습니다.

    #hostingforum.kr
    php
    
    $iterator = new ArrayIterator([1, 2, 3]);
    
    $iteratorIterator = new IteratorIterator($iterator);
    
    
    
    $innerIterator = $iteratorIterator->getInnerIterator();
    
    echo $innerIterator->current() . "n"; // 1
    
    
    
    $innerIterator->next();
    
    echo $iteratorIterator->getInnerIterator()->current() . "n"; // 2
    
    


    위 예제에서, $innerIterator와 $iteratorIterator->getInnerIterator()는 같은 내부 Iterator를 참조합니다. 따라서, $innerIterator->next()를 호출하면 $iteratorIterator->getInnerIterator()->current()도 2로 바뀝니다.

    2025-08-01 16:04

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 40,916건 / 1 페이지

검색

게시물 검색