TGViewer
Мобильный трудоголик Мобильный трудоголик @hardworkerit · 1.65K subscribers
Post #415 1.04K
🔢 Магия Pattern matching в Swift.

В Swift есть несколько способов работать с ассоциированными значениями enum, и if case let - один из самых полезных, но его синтаксис часто путают. Давайте разберемся, как он работает и в каких случаях помогает писать чище.


Что такое case let и зачем он нужен:

Обычный if проверяет булево условие. Но если у вас enum с ассоциированными значениями, просто проверить тип недостаточно - нужно еще достать эти значения. Для этого есть if case let. Это сокращенная форма switch, когда вас интересует только один кейс.

Синтаксис может показаться непривычным: сначала идет if case let, потом шаблон, потом знак равенства и значение, которое вы проверяете.


Связывание значений:

Самый простой случай - извлечь все ассоциированные значения:


if case let Puppy.mastiff(droolRating, weight) = fido {
print("Рейтинг слюнявости: \(droolRating), вес: \(weight)")
}


Это эквивалентно switch, но без лишнего кода.
Можно связывать значения выборочно, используя let перед каждым:


if case Puppy.mastiff(let droolRating, let weight) = fido {
print("Рейтинг слюнявости: \(droolRating), вес: \(weight)")
}


А можно одним именем связать все значения в кортеж:


if case let Puppy.mastiff(characteristics) = fido {
print(characteristics) // (droolRating, weight)
}



Работа с опционалами:

Если значение, которое вы проверяете, опциональное, можно добавить ? после шаблона. Это синтаксический сахар, который избавляет от лишней вложенности:


if case let Puppy.mastiff(droolRating, weight)? = optionalPuppy {
// выполнится, только если optionalPuppy не nil и это кейс mastiff
}



Когда значения не нужны:

Если вас интересует только сам кейс, а значения не нужны, let можно опустить:


if case Puppy.mastiff = fido {
print("Это мастиф, какая разница какой?)
}



Добавление условий:

С помощью запятой можно добавить дополнительные проверки:


if case let Puppy.mastiff(droolRating, _) = fido, droolRating > 8 {
print("Диван пропал")
}


То же работает с guard:


guard case let Puppy.mastiff(droolRating, _) = fido, droolRating < 10 else {
print("В дом не пущу")
}



🔗 Читать подробнее


💡 Вывод:

if case let - мощный инструмент для работы с enum, который делает код короче и понятнее, чем вложенные switch. Он особенно полезен, когда нужно обработать один конкретный кейс из нескольких, связать его значения и добавить условия. Освоив этот синтаксис, вы перестанете писать лишние switch для простых проверок.


Подписаться на канал:
➡️ Telegram | Max

Закрытый канал:
🚀 Мобильный трудоголик PRO
  • 👍 9
  • 🙏 3
  • ❤ 1
  • 🔥 1
More from @hardworkerit
  1. Oct 1, 2026🔢 Работа с Picture-in-Picture в iOS. Picture-in-Picture - системная функция iOS, которая…
  2. Sep 29, 2026🔢 Управление тулбарами на iPhone Duo. На iPhone Duo элементы управления навигацией, дейст…
  3. Sep 27, 2026🔢 Новые возможности Hashable в Swift 6.4 В Swift 6.4 добавили Hashable для нескольких тип…
  4. Sep 25, 2026🔢 Приватные свойства больше не ломают memberwise инициализатор в Swift 6.4 Swift автомати…
  5. Sep 24, 2026👨‍💻 Почему разработчики ненавидят своих менеджеров. Всем привет! Сегодня хочу разобрать…
  6. Sep 22, 2026🔢 Релиз Swift 6.4: главные изменения для разработчиков. Swift 6.4 вышел. Это обновление п…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →