
IteratorIterator::next 메서드가 호출되었을 때, 현재 이터레이터의 위치를 반환하지 않고 다른 이터레이터의 next 메서드를 호출하여 위치를 반환하게 되는 문제는 IteratorIterator 클래스가 다른 이터레이터를 감싸는 이터레이터를 구현하기 때문에 발생합니다.
이러한 문제를 해결하기 위해서는 IteratorIterator 클래스에서 next 메서드를 직접 구현해야 합니다. next 메서드는 현재 이터레이터의 위치를 반환해야 하므로, 다른 이터레이터의 next 메서드를 호출하기 전에 현재 위치를 저장해야 합니다.
다음은 IteratorIterator 클래스의 next 메서드를 구현하는 방법의 예입니다.
#hostingforum.kr
php
class IteratorIterator implements Iterator {
private $iterator;
public function __construct(Iterator $iterator) {
$this->iterator = $iterator;
}
public function next() {
$current = $this->iterator->current();
$this->iterator->next();
return $current;
}
// 다른 메서드 구현
}
위 코드에서, IteratorIterator 클래스의 next 메서드는 현재 이터레이터의 위치를 반환하기 전에 다른 이터레이터의 next 메서드를 호출하여 현재 위치를 저장합니다. 이렇게 하면 IteratorIterator::next 메서드가 호출되었을 때, 현재 이터레이터의 위치를 정확하게 반환할 수 있습니다.
2025-04-26 07:57