На этом уроке мы узнаем, как упростить создание итератора. Для этого достаточно просто написать нужный нам цикл, внутри которого воспользоватся волшебным словом yield.
Дата отправки отчёта:
22 декабря 2018 г.
Задание выполнено: за
2 час. 16 мин.
Чему научился:
Ключевое слово yield генерирует итераторы для обхода коллекций. По сути можно и не наследовать никаких интерфейсов, ключевое слово yield само для нас создаст итератор. yeild return как бы добавляет элементы пока выполняется условие MoveNext => true, а потом возвращает всю коллекцию в цикл, yield break говорит что MoveNext = false и можно прекратить обход в цикле так как в коллекции нет больше элементов для обхода. Как-то так, в какой-то момент мне казалось что я понял как все работает, а сейчас вроде понятно, а вроде и нет, немого запутался) Из урока про yield вообще ничего не понял, смотрел и читал дополнительно.
Что было сложным:
Понять как работает yield. Вроде немного понял, но не до конца.
Научился: Использованию yield. Yield позволяет избавится от реализации дополнительного класса , при использовании цикла foreach. И в определенных ситуациях оптимизировать вычисления при большом переборе значений.
Научился: На этом уроке мы наконец-то воспользовались помощью волшебного слова yield. Я еще не до конца прочувствовал эту тему. В голове возникал вопрос: "Для чего городить огород, если есть цикл foreach, который до этого всегда выручал и без использования этих интерфейсов!" Оказалось, что foreach также использует итератор, но неявно. На данный момент я понимаю так: Класс , являющийся коллекцией объектов, использует yield для реализации последовательного обращения ко всем своим элементам с начала до конца. При выполнении программы, yield создаёт класс, который содержит ряд методов по созданию счётчика перечисления, отслеживанию его переполнения, сброса при повторном обращении и тому подобное...