На этом уроке мы узнаем, как упростить создание итератора. Для этого достаточно просто написать нужный нам цикл, внутри которого воспользоватся волшебным словом yield.
Дата отправки отчёта:
30 мая 2017 г.
Задание выполнено: за
44 мин.
Чему научился:
Познакомился с волшебным словом yield.
Что было сложным:
Понять секрет волшебства слова yield.
Комментарии:
yield - волшебное слово, непостижимым образом создающее необходимые классы для решения поставленной задачи. Совершенно непонятно как использовать слово yield
yield можно сравнить с походом в супермаркет: 1 - взяли корзину, идёте вдоль продуктов и складываете то, что вам понравилось в корзину, а потом уже когда закончили выбор товаров, начинаете их обрабатывать, что вам надо, а что нет, нормальный ли срок годности и т.д. 2 - yield версия похода в магазин: взяли корзину, идёте вдоль продуктов и взяв продукт, сразу обрабатываете его, проверяя нужен ли он вам, может быть рядом стоящий пакет более свежий. Если всё ок, положили в корзину и пошли дальше по списку. В первом случая, вроде бы быстрее, пробежались по всему списку и выбрали что надо, но по факту, может быть рядом был более свежий экземпляр, так же может быть по списку уже всё и вам надо было сразу топать на кассу, так же после обработки корзинки может оказаться, что что-то не свежее и надо будет отнести/оставить это дело, а на него потрачено время и силы.
Научился: Использованию yield. Yield позволяет избавится от реализации дополнительного класса , при использовании цикла foreach. И в определенных ситуациях оптимизировать вычисления при большом переборе значений.
Научился: На этом уроке мы наконец-то воспользовались помощью волшебного слова yield. Я еще не до конца прочувствовал эту тему. В голове возникал вопрос: "Для чего городить огород, если есть цикл foreach, который до этого всегда выручал и без использования этих интерфейсов!" Оказалось, что foreach также использует итератор, но неявно. На данный момент я понимаю так: Класс , являющийся коллекцией объектов, использует yield для реализации последовательного обращения ко всем своим элементам с начала до конца. При выполнении программы, yield создаёт класс, который содержит ряд методов по созданию счётчика перечисления, отслеживанию его переполнения, сброса при повторном обращении и тому подобное...