Хотя название Лекции 3 этого курса «Developing iOS 10 Apps with Swift» совпадает с названием Лекции 3 курса «Developing iOS 9 Apps with Swift» на этой Лекции очень отчетливо видно, что профессор Пол Хэгерти сделал небольшой разворот всего курса от ОБЪЕКТНО-ОРИЕНТИРОВАННОГО программирования, которое напоминает “Дикий Запад” с объектами, на которые указывает множество людей, к ФУНКЦИОНАЛЬНОМУ программированию с множеством неизменяемых объектов с APIs похожими на математические функции.
Конечно, iOS вовсе не была сконструирована на основе идеи функционального программирования. Но люди, которые изобретали Swift, держали “в голове” идею о функциональном программировании. Так что при разработке вашего iOS приложения (по крайней мере в части Модели) вы можете использовать множество элементов функционального программирования.
Это новый рубеж в iOS программировании, потому что в течение 20 -30 лет люди в основном использовали в iOS программировании только reference type объекты, имея в виду концепцию объектно-ориентированного программирования. Но когда вы программируете с помощью структур structs и перечислений enums, и особенно если вы подключаете механизмы протоколов Protocols (рассматриваются позже) и Generics, то вы можете реально сделать прекрасную работу, имеющую дело с реальным функциональным программированием.
И хотя темы в Лекции 3 нового курса примерно те же, акценты расставлены совсем по-другому. Теперь на первом месте value types, а о reference types — лишь мимоходом, подробно о структурах structs и перечислениях enums, а о классах classes — лишь мимолетом. Очень подробно о диапазонах Range<T> и о том, при каких условиях Range<T> становится последовательностью Sequence и позволяет применять к себе синтаксическую конструкцию for in. Кстати, единственный оставшийся в Swift оператор for.