Функции отладки
В данной статье при описании функций приняты следующие обозначения:
|
assert
Проверяет условие condition
, которое должно возвращать логическое значение. Если условие оценивается как false
, программа завершается с сообщением message
.
Спецификация функции
assert(condition: <логическое значение | сравнение | логическое выражение>, [message: <строка>]) :: <пустое значение> , <ошибка>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
condition |
логическое значение сравнение логическое выражение |
Условие для проверки, должно возвращать логическое значение. |
да |
|
message |
строка |
Необязательное пользовательское сообщение об ошибке. Если утверждение условия не выполняется, к пользовательскому сообщению автоматически добавляется префикс сообщения по умолчанию. См. примеры ниже для примера полностью сформированного сообщения в журнале. |
нет |
Примечания
Эта функция имеет специальное поведение, о котором следует знать.
-
Функцию
assert
следует использовать автономно и только тогда, когда вы хотите прервать программу. Избегайте ее использования в логических выражениях и других ситуациях, в которых вы хотите, чтобы программа продолжала работу, даже если условие оценивается какfalse
.
Ошибки
Функция assert
может возвращать ошибки, для которых требуется обработка:
-
условие
оценивается какfalse
Примеры
Утверждение (true)
ok, err = assert("foo" == "foo", message: "\"foo\" must be \"foo\"!")
true
Утверждение (false)
assert!("foo" == "bar", message: "\"foo\" must be \"foo\"!")
assert_eq
Проверяет, что два выражения, левое
и правое
, имеют одинаковое значение. Если они не равны, программа прерывается с помощью сообщения
.
Спецификация функции
assert_eq(левое: <любой тип>, правое: <любой тип>, [message: <строка>]) :: <логическое значение>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
левое |
любое |
Значение для проверки на равенство с |
да |
|
правое |
любое |
Значение для проверки на равенство с |
да |
|
message |
строка |
Необязательное пользовательское сообщение об ошибке. Если проверка на равенство не выполняется, к пользовательскому сообщению автоматически добавляется префикс сообщения по умолчанию. См. примеры ниже для примера полностью сформированного сообщения в журнале. |
нет |
Примечания
Эта функция имеет специальное поведение, о котором следует знать.
-
Функцию
assert_eq
следует использовать автономно и только тогда, когда вы хотите прервать программу. Избегайте ее использования в логических выражениях и других ситуациях, в которых вы хотите, чтобы программа продолжала работу, даже если условие оценивается какfalse
.
Примеры
Успешное утверждение
assert_eq!(1, 1)
true
Неудачное утверждение
assert_eq!(127, [1, 2, 3])
Неудачное утверждение с пользовательским сообщением в журнале
assert_eq!(1, 0, message: "Unequal integers")
log
Выводит значение
в стандартный вывод Vector с указанным level
.
Спецификация функции
log(значение: <любой тип>, [level: <строка>, rate_limit_secs: <целое число>]) :: <пустое значение>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
значение |
любое |
Значение для вывода в лог. |
да |
|
level |
строка |
Уровень логирования. |
|
нет |
rate_limit_secs |
целое число |
Определяет, что сообщение будет выводиться не чаще указанного количества секунд. Используйте значение |
|
нет |
Примеры
Вывод сообщения в лог
log("Hello, World!", level: "info", rate_limit_secs: 60)
null
Вывод ошибки в лог
ts, err = to_int(.field) if err != null { log(err, level: "error") }
null