for case let: фильтр и разворачивание в заголовке цикла 🌀

🔁 case в заголовке for превращает цикл в сопоставление с образцом: элементы, которые не подошли, пропускаются, ассоциированные значения связываются, а where сужает дальше. Появилось это ещё в Swift 2.0, номера SE у него нет — в чейнджлоге тогда написали, что сопоставление с образцом стало доступно в if/case, while/case, guard/case и for-in/case. Полезные формы: for case let .shirt(size) in items where … — фильтр и связывание в одну строку; for case let n? in numbers — разворачивание Optional, где n? это сахар для .some(n).

💡 Нюанс, который объясняет, зачем вообще нужно слово case: именно оно включает в заголовке цикла expression patterns. Просто for (x, 0) in points невалиден, а for case (x, 0) in points компилируется. И ещё одна деталь: where у for фильтрует — пропускает элемент и идёт дальше. У while то же слово завершает цикл. Разные вещи с одинаковым написанием.

#Swift #iOSDevelopment #SwiftProgramming #PatternMatching #CleanCode

for case let: фильтр и разворачивание в заголовке цикла 🌀 | Сетка — социальная сеть от hh.ru