Функции отладки

В данной статье при описании функций приняты следующие обозначения:

  • Типы значений, которые принимает аргумент, указаны в угловых скобках.

  • Перечень необязательных аргументов заключается в квадратные скобки. При вызове функции квадратные скобки вводить не нужно.

  • После :: в угловых скобках указаны типы значений, которые возвращает функция.

assert

Проверяет условие condition, которое должно возвращать логическое значение. Если условие оценивается как false, программа завершается с сообщением message.

Спецификация функции

assert(condition: <логическое значение | сравнение | логическое выражение>, [message: <строка>])
:: <пустое значение> , <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

condition

логическое значение сравнение логическое выражение

Условие для проверки, должно возвращать логическое значение.

да

message

строка

Необязательное пользовательское сообщение об ошибке.

Если утверждение условия не выполняется, к пользовательскому сообщению автоматически добавляется префикс сообщения по умолчанию. См. примеры ниже для примера полностью сформированного сообщения в журнале.

нет

Примечания

Эта функция имеет специальное поведение, о котором следует знать.

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

Ошибки

Функция assert может возвращать ошибки, для которых требуется обработка:

  • условие оценивается как false

Примеры

Утверждение (true)

Example 1. Исходный код
ok, err = assert("foo" == "foo", message: "\"foo\" must be \"foo\"!")
Example 2. Результат
true

Утверждение (false)

Example 3. Исходный код
assert!("foo" == "bar", message: "\"foo\" must be \"foo\"!")

assert_eq

Проверяет, что два выражения, левое и правое, имеют одинаковое значение. Если они не равны, программа прерывается с помощью сообщения.

Спецификация функции

assert_eq(левое: <любой тип>, правое: <любой тип>, [message: <строка>])
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

левое

любое

Значение для проверки на равенство с right.

да

правое

любое

Значение для проверки на равенство с left.

да

message

строка

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

нет

Примечания

Эта функция имеет специальное поведение, о котором следует знать.

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

Примеры

Успешное утверждение

Example 4. Исходный код
assert_eq!(1, 1)
Example 5. Результат
true

Неудачное утверждение

Example 6. Исходный код
assert_eq!(127, [1, 2, 3])

Неудачное утверждение с пользовательским сообщением в журнале

Example 7. Исходный код
assert_eq!(1, 0, message: "Unequal integers")

log

Выводит значение в стандартный вывод Vector с указанным level.

Спецификация функции

log(значение: <любой тип>, [level: <строка>, rate_limit_secs: <целое число>])
:: <пустое значение>
Аргумент Тип Описание По умолчанию Обязателен

значение

любое

Значение для вывода в лог.

да

level

строка

Уровень логирования.

info

нет

rate_limit_secs

целое число

Определяет, что сообщение будет выводиться не чаще указанного количества секунд. Используйте значение 0, чтобы отключить ограничение частоты.

1

нет

Примеры

Вывод сообщения в лог

Example 8. Исходный код
log("Hello, World!", level: "info", rate_limit_secs: 60)
Example 9. Результат
null

Вывод ошибки в лог

Example 10. Исходный код
ts, err = to_int(.field)
if err != null {
log(err, level: "error")
}
Example 11. Результат
null