Опционалы Swift. Небольшой трюк guard

О

В этой небольшой статье я покажу вам крошечный трюк, немного больше раскрывающий Опционалы Swift. Статья будет совсем миниатюрная — просто небольшой фрагмент кода, который будет полезен в некоторых сценариях. Вы, вероятно, часто видите подобный фрагмент кода:

Да, понятно что это стандартный и, можно сказать, общепринятый и безопасный вариант извлечения опционалов, однако многие программисты могут часто им пренебрегать или просто забывать о нем. Причина тут в том, что guard — относительно новое «взаимодействие» для разработчиков iOS, и не самое интуитивное и понятное с первого взгляда неискушенным кодерам. Но что если это выглядело бы так:

Не правда ли, такая запись заставляет пересмотреть свои взгляды на извлечение опционалов?

Это гораздо более понятная во многих случаях запись, особенно если вы просто хотите что то сделать с объектом, не задумываясь о его «существовании» (!=nil).

Итак, как же расширить функциональность опционалов до такого простого уровня?

Расширьте в вашем коде опционалы, используя код, приведенный ниже!

Вот и все! Теперь извлечение опционалов значительно упрощено. Заключение (closure) then срабатывает, если опционал существует (!= nil), а otherwise срабатывает в противном случае.

 

Удачного программирования!

Поддержите ресурс blog.justDev:

Сведения об авторе

Игорь Малеваный

4 комментария

    • Ну, по сути своей структурой в основном. + возможностью удобно дергать вариант «нил/ненил» с любой точки, где доступна переменная.
      По сути if let можно дергать так же, но только тут не надо писать постоянно if let || guard.

  • guard — это синтаксический сахарез, который предназначен для того, чтобы логический блок оставался на том же отступе, что и остальное… Как это можно не понимать?

    if let = ‘self = self {
    // logic block indent!
    } else {
    }

    guard let self` = self else { return }

    // same indent!

    Охх…

  • guard — это синтаксический сахарез, который предназначен для того, чтобы логический блок оставался на том же отступе, что и остальное… Как это можно не понимать?

    if let = ‘self = self {
    // logic block indent!
    } else {
    }

    guard let self` = self else { return }

    // same indent!

    Охх…

Instagram

Поддержите ресурс blog.justDev:

Свежие записи

Рубрики