Утверждения (они же ассерты, они же assertions)

Опциональные типы позволяют проверять значения, которые могут существовать или отсутствовать, и писать код, который красиво обрабатывает отсутствие значения. Однако, в некоторых случаях код не может продолжить выполнение в случае, когда значение не существует или не удовлетворяет определенным условиям. В этих ситуациях, вы можете вызвать ассерт (trigger an assertion) — это остановит выполнение кода и дасть возможность провести отладку, чтобы выяснить, откуда взялось неподходящее значение.

Отладка с утверждениями

Утверждение — это проверка, проходящая во время исполнения, которая убеждается, что определенное логическое условие является правдой (true). Оно в буквальном смысле «утверждает», что условие верно. Используйте утверждения, чтобы убедиться, что определенное условие обязательно соблюдается прежде, чем код исполняется. Если условие является правдой, код выполняется так, как и должен, а если нет, то приложение выключается.

Если ваш код вызывает утверждение в отладочном окружении, т.е., например, при запуске в XCode, то вы сможете увидеть конкретное место и состояние, вызвавшее падение приложения. Утверждение так же позволяет вам предоставить подходящее отладочное сообщение, отражающее натуру утверждения.

Утверждение пишется, используя глобальную функцию assert. Ему передается функция или выражение, возвращающее true или false, а также сообщение, которое отображается в случае, когда результат выражения или функциии — false.

В этом примере, исполнение кода продолжится только в случае, если возраст age >= 0, т.е. age должно быть неотрицательным. В случае, если оно отрицательно (как в нашем примере), утверждение будет неверным и завершит наше приложение.

Сообщение можно пропустить:

Когда стоит использовать утверждения

Используйте их, когда условие потенциально может быть false, но должно обязательно быть true, чтобы код продолжил выполнение нормально. Вот пара примеров:

Индекс для обращения к элементу коллекции должен быть в пределах коллекции, но может быть выше или ниже пределов
Значение, передаваемое функции, некорректно и не позволяет нормально ее выполнить Опциональная переменная содержит nil, но должна быть нe-nil для успешного выполнения кода.

Для более подробной информации смотрите также «Доступ к элементам коллекции» и «Функции»

Утверждения завершают приложение, поэтому они являются эффективным способом, чтобы подсказать, что все необходимые условия всгеда соблюдаются в течение процесса разработки и отловить нужные ошибки, но перед публикацией приложения от них лучше избавиться (поскольку не очень правильно просто брать и вырубать приложение, не сообщив ничего пользователю).


Просмотренно: 1 259 раз