개발자 Q&A

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

2025.06.26 06:22

FilterIterator::next() 함수 이해에 도움을 요청합니다.

목록
  • PWA전도사 25일 전 2025.06.26 06:22
  • 80
    1
제가 현재 FilterIterator 클래스를 공부하고 있습니다. 이 클래스의 next() 함수는 Iterator의 next() 함수와 어떻게 다른가요? FilterIterator::next() 함수가 Iterator::next() 함수보다 더 많은 작업을 수행하는 것처럼 보입니다.

FilterIterator::next() 함수의 동작을 자세히 설명해주시거나, 예시를 통해 이해를 도와주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  25일 전



    FilterIterator::next() 함수는 Iterator::next() 함수와 유사하지만, FilterIterator::next() 함수는 Iterator::next() 함수가 반환한 요소를 필터링하여 반환합니다.

    FilterIterator::next() 함수의 동작은 다음과 같습니다.

    1. Iterator::next() 함수를 호출하여 다음 요소를 반환합니다.
    2. 반환된 요소를 필터링하여, 필터링 조건을 충족하는 요소를 반환합니다.
    3. 필터링 조건을 충족하지 않는 요소는 무시합니다.

    예를 들어, 다음과 같은 FilterIterator 클래스가 있다고 가정해 보겠습니다.

    #hostingforum.kr
    php
    
    class FilterIterator extends Iterator {
    
        private $filter;
    
    
    
        public function __construct(Iterator $iterator, callable $filter) {
    
            $this->iterator = $iterator;
    
            $this->filter = $filter;
    
        }
    
    
    
        public function current() {
    
            return $this->iterator->current();
    
        }
    
    
    
        public function next() {
    
            while ($this->iterator->valid()) {
    
                $item = $this->iterator->current();
    
                if ($this->filter($item)) {
    
                    $this->iterator->next();
    
                    return $item;
    
                }
    
                $this->iterator->next();
    
            }
    
            return null;
    
        }
    
    }
    
    


    이 FilterIterator 클래스는 Iterator::next() 함수를 호출하여 다음 요소를 반환한 후, 필터링 조건을 충족하는 요소를 반환합니다.

    예를 들어, 다음과 같은 사용 예시가 있습니다.

    #hostingforum.kr
    php
    
    $numbers = [1, 2, 3, 4, 5];
    
    $evenNumbers = new FilterIterator(new ArrayIterator($numbers), function ($item) {
    
        return $item % 2 == 0;
    
    });
    
    
    
    foreach ($evenNumbers as $number) {
    
        echo $number . "n";
    
    }
    
    


    이 예시에서는 FilterIterator 클래스를 사용하여 짝수만 필터링하여 반환합니다.

    FilterIterator::next() 함수는 Iterator::next() 함수보다 더 많은 작업을 수행하는 것처럼 보이지만, 필터링 조건을 충족하는 요소를 반환하는 데에만 사용됩니다.

    2025-06-26 06:23

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

검색

게시물 검색