Функции отладки
|
В данном разделе при описании функций приняты следующие обозначения:
|
assert
Проверяет условие condition, которое должно возвращать логическое значение. Если условие оценивается как false, программа завершается с сообщением message.
Спецификация функции
assert(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
Проверяет, что два выражения, left и right, имеют одинаковое значение. Если они не равны, программа прерывается с сообщением message.
Спецификация функции
assert_eq(left: <любой тип>, right: <любой тип>, [message: <строка>]) :: <логическое значение>
| Аргумент | Тип | Описание | По умолчанию | Обязателен |
|---|---|---|---|---|
|
любое |
Значение для проверки на равенство с |
да |
|
|
любое |
Значение для проверки на равенство с |
да |
|
|
строка |
Необязательное пользовательское сообщение об ошибке. Если проверка на равенство не выполняется, к пользовательскому сообщению автоматически добавляется префикс сообщения по умолчанию. См. примеры ниже для примера полностью сформированного сообщения в журнале. |
нет |
Примечания
Эта функция имеет специальное поведение, о котором следует знать.
-
Функцию
assert_eqследует использовать автономно и только тогда, когда вы хотите прервать программу. Избегайте ее использования в логических выражениях и других ситуациях, в которых вы хотите, чтобы программа продолжала работу, даже если условие оценивается какfalse.
Примеры
Успешное утверждение
assert_eq!(1, 1)
true
Неудачное утверждение
assert_eq!(127, [1, 2, 3])
Неудачное утверждение с пользовательским сообщением в журнале
assert_eq!(1, 0, message: "Unequal integers")
log
Выводит value в стандартный вывод Vector с указанным level.
Спецификация функции
log(value: <любой тип>, [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
Была ли полезна эта страница?