На этом уроке мы увидим, что класс, оказывается, создавать не обязательно. Магия слова yield сделает всё за тебя, можно просто один раз организовать перебор нужных элементов, и потом его можно использовать через обычный foreach в любом месте программы. Вся прелесть в том, что перебор элементов происходит по мере необходимости.
Дата отправки отчёта:
28 мая 2017 г.
Задание выполнено: за
20 мин.
Чему научился:
Затрудняюсь даже сказать.
Что было сложным:
Понимание происходящего.
Комментарии:
Вот я закончил курс. Почему курс оказался плох? Не знаю как для других, я про себя скажу. Самая главная ошибка всех обучающих курсов или преподов в том, что они либо сами не понимают до конца тему, либо не могут применить правильно инструмент. Либо применяют его примерно так: розовый банан скачет по космосу.
Я долго думал над этой фразой, чтобы она как можно более упоротей звучала. Примерно то же я вижу у себя на экране: черное окно и там столбик каких-то цифр. Я понятия не имею, что такое простые множители или там цифры. Для меня если я могу запомнить цифры в голове, то они простые, а 233459089 для меня сложная цифра.
Курс называется "разложение числа на простые множители". Сначала я подумал, что число 123 будет раскладываться на 1, 2 и 3. С этим примером у меня связано одно событие. В пту году в 2005 был день открытых дверей и надо было что-то сделать и показать для посетителей, типа чем мы занимаемся тут. У меня валялась плата с тремя индикаторами от спутникового приемника и там было 3 регистра для статической индикации. Я еще раньше с корешем ходил к нему в общагу и он показывал мне, как написать прошивку для контроллера под эту плату. Типа вот есть число 123 и оно влазит в 1 байт, а плата с индикаторами - это 3 байта. Как бы так разобрать число на отдельные цифры?
Я пришел к нашей училке по матану и программированию и спросил ее, а она мне и рассказала. Я это написал в коде и оно заработало. С тех пор я до конца жизни это буду помнить.
Тут я не понял, что такое простые множители и зачем они мне нужны в этой проге. Я тупо не видел образа или конкретного применения. Поэтому у меня в голове розовый банан скачет по космосу.
Как я понял - елд нужен для составления какого-то списка в памяти по критериями фильтрации какого-то массива данных. Потом этот список можно использовать дальше в своем коде. И как там пишут - linq заменил почти елд, т.к. фильтры стали делаться sql подобными запросами.
В конечном эффекте я все равно не понял про итераторы и елды. Перебрать дерево вроде можно и так. Мне в реальной проге надо было перебирать радиокнопки отмеченные в разных группах и я делал в цикле.
Интуитивно я ощущаю, что эта штука нужна для реализации фильтра в контролах типа gridview или как его там, который рисует таблицы со столбцами как в екселе или типа того. Но этот курс из категории профи, так что неудивительно, что ничего непонятно.
Что нужно было сделать? 1 Дать простое определение итератору. 2 Что такое IEnumerator и IEnumerable. 3 В каком реальном проекте их использовали и что было бы, если бы не использовали. 4 Yield это обязательное слово в связке IEnumerator и IEnumerable или идет дополнением? 5 Какой с него профит в реальном софте и что было бы без него. 6 Когда это нужно использовать и когда не нужно.
Так как этот курс находится в категории ПРОФИ, и до него все курсы по C# у тебя не 100% выполнены, то чего ты хотел? бежать впереди паровоза? ребёнок вначале учится ходить, а потом всё остальное, а не сразу с пелёнок в космос =) Плюс этот курс был записан давно, лучше про итераторы с отличным примером сортировку карточной колоды продемонстрировано в курсе по языку Java: www.videosharp.info/video/design-iterator
Научился: Оформил работу алгоритма в отдельный метод. Курс понравился. Своих денег стоит сполна. Хорошо продемонстрировано использование интерфейсов в конкретной задаче. Использование и предназначение зарезервированного слова yield демонстрируется сполна и разжевывается до мельчайших подробностей. Понравилось, что с каждым разом код становился. всё меньше и чище. Это тоже хорошая демонстрация правильного рефакторинга кода. Да и программа, которая получилась в результате выглядит солидно для портфолио молодого разработчика. ЕВ ждем еще!)