Урок №6 - Set. Полностью переработан
В продолжении улучшения текущих уроков, чтобы можно было реализовывать новые. На этот раз множества подверглись улучшению и переработке.
Раньше тут была карточка: синтаксис, пара примеров, ссылка. Сейчас - это полноценный урок на 2.5-4 часа. Три раздела: создание и поиск, добавление и удаление, операции над множествами.
Что внутри:
1. Сравнение всех трёх коллекций - Array, Dictionary, Set. Таблица: когда что выбрать, по какому критерию. Порядок, уникальность, скорость поиска - всё в одном месте. Эту табличку потом можно использовать как шпаргалку, удобно.
2. Реальные сценарии с прода - прочитанные уведомления, избранные товары, фильтры в каталоге, дедупликация данных с сервера. Привёл примеры использования множеств на проде.
3. Четыре операции - union, intersection, subtracting, symmetricDifference. Каждое описание функций с продовым примером. Навыки vs вакансия через intersection и subtracting - будет сразу видно, что знаешь и чего не хватает.
4. Хитрая ловушка с типом - без слова Set литерал ["A", "B"] станет массивом. Код скомпилируется, всё заработает. Но увы, не как Set. Об этом не всегда пишут в туториалах, хотя информация, хоть и мелочная, но важная. Лишний раз сэкономить время.
5. 5 домашних заданий - любимые жанры, чистка дубликатов email, общие друзья через intersection / subtracting, навыки vs вакансия с процентом совпадения, анализ текста с поиском повторов и гласных. Домашние задания переработаны, чтобы теорию закрепить практикой!
6. График повторения - через 1 день, 3 дня, 10 дней. На третий день - напиши программу с двумя Set навыков и найди пересечение, разность, лишнее. На десятый - объясни вслух, почему contains у Set мгновенный.
Множеста - это не самая популярная коллекция. Но когда на собеседовании спрашивают:"какие коллекции знаешь в Swift и чем отличаются" - Array и Dictionary все назовут, а вот про Set и тем-более реальное применение на проде, могут и забыть.
После Dictionary обучение множествам пойдет легче, так как уже часть похожего и понятного встречается.
Если старую карточку уже прошёл - возвращаться не обязательно. Но если хочешь закрепить, пятое задание с merge и средним баллом - хорошая проверка.
Не нужно пугаться коллекций, поверьте, 80% информации про них пригодится на собеседованиях. В жизни и проде основные кейсы это применение на уровне смысла коллекций:
• Взять упорядоченный список, чтобы поработать с UITableView / UICollectionView / LazyVStack / LazyHStack / Table / List
• Сделать UI компонент с темами и значениями, как в играх: Стратегии и перечень игр, Шутеры и перечень игр и т.д.
Главное запомнить смысл стандартных коллекций и в будущем доп. коллекций от Apple а-ля OrderedSet, UniqueArray и etc. но это так - бонус!