
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