Как избавиться от двойного вызова Iterator :: check ()?

0

На странице PHP Iterator :: говорится:

Return Values:

Returns scalar on success, or NULL on failure.

но для того, чтобы решить из логики итератора, является ли текущий узел итератора действительным или нет (чтобы иметь возможность возвращать нуль или что-то еще) из Iterator::key, нужно вызвать Iterator::check(). Следовательно, для меня кажется естественным, что большинство людей затем вызывают Iterator::check() из Iterator::next() чтобы он мог установить возвращаемое значение 'Iterator :: key()' в значение null, если текущая позиция итератора является недействительным.

Но это приводит к тому, что Iterator::check() вызывается дважды, когда выполняется цикл foreach. Как я могу избавиться от такой избыточности?

Теги:
iterator

1 ответ

0

Чтобы решить проблему, достаточно ввести логическую переменную $currentNodeChecked, которую можно проверить перед вызовом Iterator::check().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню