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

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

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

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

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

assert

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

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

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

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

condition

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

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

да

message

строка

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

нет

Ошибки

Функция assert возвращает ошибку, для которой требуется обработка, если condition возвращает значение false

Примеры

Истинное утверждение

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

Ложное утверждение

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

assert_eq

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

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

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

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

left

любое

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

да

right

любое

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

да

message

строка

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

нет

Примеры

Верное утверждение

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

Ложное утверждение

Пример 6. Исходный код
assert_eq!(127, [1, 2, 3])

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

Пример 7. Исходный код
assert_eq!(1, 0, message: "Unequal integers")

log

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

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

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

value

любое

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

да

level

строка

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

info

нет

rate_limit_secs

целое число

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

1

нет

Примеры

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

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

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

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