Функции типов и форматирования

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

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

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

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

Функции проверки типов

is_null

Проверяет, является ли значение value пустым (null) или нет.

Для более гибкой проверки используйте функцию is_nullish.

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

is_null(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить

да

Примеры

Значение null

Пример 1. Исходный код
is_null(null)
Пример 2. Результат
true

Несоответствующий тип

Пример 3. Исходный код
is_null("строка")
Пример 4. Результат
false

is_nullish

Определяет, является ли value "nullish", то есть не имеющим значимого содержания. "Nullish" считаются значения:

  • null;

  • "-";

  • состоящие только из пробелов, то есть символов со свойством Unicode White_Space.

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

is_nullish(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить на отсутствие значимого содержания

да

Примеры

Обнаружение null (пустая строка)

Пример 5. Исходный код
is_nullish("")
Пример 6. Результат
true

Обнаружение null (строка с дефисом)

Пример 7. Исходный код
is_nullish("-")
Пример 8. Результат
true

Обнаружение null (пустая строка)

Пример 9. Исходный код
is_nullish("


")
Пример 10. Результат
true

is_empty

Проверяет, имеет ли объект, массив или строка нулевую длину.

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

is_empty(value: <объект | массив | строка>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

объект массив строка

Значение, которое необходимо проверить.

да

Примеры

Пустой массив

Пример 11. Исходный код
is_empty([])
Пример 12. Результат
true

Непустая строка

Пример 13. Исходный код
is_empty("строка")
Пример 14. Результат
false

Непустой объект

Пример 15. Исходный код
is_empty({"foo": "bar"})
Пример 16. Результат
false

is_boolean

Проверяет, является ли value логическим значением.

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

is_boolean(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любое

Значение, которое необходимо проверить

да

Примеры

Допустимое логическое значение

Пример 17. Исходный код
is_boolean(false)
Пример 18. Результат
true

Несоответствующий тип

Пример 19. Исходный код
is_boolean("строка")
Пример 20. Результат
false

is_integer

Проверяет, является ли value целым числом.

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

is_integer(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить.

да

Примеры

Допустимое целое число

Пример 21. Исходный код
is_integer(1)
Пример 22. Результат
true

Несоответствующий тип

Пример 23. Исходный код
is_integer("строка")
Пример 24. Результат
false

is_float

Проверяет, является ли value числом с плавающей точкой.

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

is_float(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить.

да

Примеры

Допустимое число с плавающей точкой

Пример 25. Исходный код
is_float(0.577)
Пример 26. Результат
true

Несоответствующий тип

Пример 27. Исходный код
is_float("строка")
Пример 28. Результат
false

is_timestamp

Проверяет, является ли value меткой времени (timestamp).

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

is_timestamp(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить.

да

Примеры

Допустимая метка времени (timestamp)

Пример 29. Исходный код
is_timestamp(t'2021-03-26T16:00:00Z')
Пример 30. Результат
true

Несоответствующий тип

Пример 31. Исходный код
is_timestamp("строка")
Пример 32. Результат
false

is_string

Проверяет, является ли value строкой.

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

is_string(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить

да

Примеры

Допустимая строка

Пример 33. Исходный код
is_string("строка")
Пример 34. Результат
true

Несоответствующий тип

Пример 35. Исходный код
is_string([1, 2, 3])
Пример 36. Результат
false

rv_is_utf8

Проверяет, является ли value строкой, закодированной в UTF-8.

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

rv_is_utf8(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить

да

Примеры

Допустимая строка

Пример 37. Исходный код
rv_is_utf8("valid_string")
Пример 38. Результат
true

Недопустимая строка

Пример 39. Исходный код
rv_is_utf8(b"\xff123123")
Пример 40. Результат
false

Не строка

Пример 41. Исходный код
rv_is_utf8(123)
Пример 42. Результат
false

is_ipv4

Проверяет, является ли value допустимым IPv4-адресом или нет.

IPv4-совместимые и IPv4-преобразованные IPv6-адреса не считаются допустимыми.

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

is_ipv4(value: <строка>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

строка

IP-адрес, который необходимо проверить.

да

Примеры

Допустимый IPv4-адрес

Пример 43. Исходный код
is_ipv4("10.0.102.37")
Пример 44. Результат
true

Допустимый IPv6-адрес

Пример 45. Исходный код
is_ipv4("2001:0db8:85a3:0000:0000:8a2e:0370:7334")
Пример 46. Результат
false

Произвольная строка

Пример 47. Исходный код
is_ipv4("foobar")
Пример 48. Результат
false

is_ipv6

Проверяет, является ли value допустимым IPv6-адресом или нет.

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

is_ipv6(value: <строка>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

строка

IP-адрес, который необходимо проверить.

да

Примеры

Допустимый IPv6-адрес

Пример 49. Исходный код
is_ipv6("2001:0db8:85a3:0000:0000:8a2e:0370:7334")
Пример 50. Результат
true

Допустимый IPv4-адрес

Пример 51. Исходный код
is_ipv6("10.0.102.37")
Пример 52. Результат
false

Произвольная строка

Пример 53. Исходный код
is_ipv6("foobar")
Пример 54. Результат
false

is_json

Проверяет, является ли value допустимым документом JSON.

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

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

value

строка

Значение, которое необходимо проверить

да

variant

строка

Вариант типа JSON для явной проверки:

  • object — объект JSON;

  • array — массив JSON;

  • string — строковое значение в формате JSON, заключенное в кавычки;

  • number — целое число или число с плавающей запятой;

  • bool — true или false;

  • null — значение null.

нет

Примеры

Допустимый JSON-объект

Пример 55. Исходный код
is_json("{}")
Пример 56. Результат
true

Недопустимое значение

Пример 57. Исходный код
is_json("{")
Пример 58. Результат
false

Точный вариант

Пример 59. Исходный код
is_json("{}", variant: "object")
Пример 60. Результат
true

Недопустимый точный вариант

Пример 61. Исходный код
is_json("{}", variant: "array")
Пример 62. Результат
false

is_regex

Проверяет, является ли value регулярным выражением.

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

is_regex(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить

да

Примеры

Допустимое регулярное выражение

Пример 63. Исходный код
is_regex(r'pattern')
Пример 64. Результат
true

Несоответствующий тип

Пример 65. Исходный код
is_regex("строка")
Пример 66. Результат
false

is_array

Проверяет, является ли value массивом.

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

is_array(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить

да

Примеры

Допустимый массив

Пример 67. Исходный код
is_array([1, 2, 3])
Пример 68. Результат
true

Несоответствующий тип

Пример 69. Исходный код
is_array("строка")
Пример 70. Результат
false

is_object

Проверяет, является ли value объектом.

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

is_object(value: <любой тип>)
:: <логическое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любой

Значение, которое необходимо проверить

да

Примеры

Допустимый объект

Пример 71. Исходный код
is_object({"foo": "bar"})
Пример 72. Результат
true

Несоответствующий тип

Пример 73. Исходный код
is_object("строка")
Пример 74. Результат
false

tag_types_externally

Добавляет информацию о типе ко всем вложенным скалярным значениям в предоставленном значении value.

Информация о типе добавляется в ключ, то есть после преобразования value имеет форму объекта с полями "тип": значение.

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

tag_types_externally(value: <любой тип>)
:: <объект | массив объектов | пустое значение>
Аргумент Тип Описание По умолчанию Обязателен

value

любое

Значение, которое нужно пометить типами.

да

Примеры

Пометить тип в скалярном значении

Пример 75. Исходный код
tag_types_externally(123)
Пример 76. Результат
{
  "integer": 123
}

Пометить типы в объекте

Пример 77. Исходный код
tag_types_externally({
  "message": "Hello world",
  "request": {
    "duration_ms": 67.9
  }
})
Пример 78. Результат
{
  "message": {
    "string": "Hello world"
  },
  "request": {
    "duration_ms": {
      "float": 67.9
    }
  }
}

Пометить типы в массиве

Пример 79. Исходный код
tag_types_externally(["foo", "bar"])
Пример 80. Результат
[
  {
    "string": "foo"
  },
  {
    "string": "bar"
  }
]

Типы в пустом значении

Пример 81. Исходный код
tag_types_externally(null)
Пример 82. Результат
null

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

bool

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

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

bool(value: <любой тип>)
:: <логическое значение> , <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

любое

Значение, которое необходимо проверить на принадлежность к логическим.

да

Ошибки

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

  • value не является логическим значением.

Примеры

Объявление типа Boolean

Пример 83. Исходный код
bool!(.value)
Пример 84. Результат
false

int

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

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

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

value

любой

Значение, для которого необходимо убедиться, что оно является целым числом.

да

Ошибки

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

  • value не является целым числом.

Примеры

Объявление переменной типа целое число

Пример 85. Исходный код
int!(.value)
Пример 86. Результат
42

float

Возвращает value, если это число с плавающей точкой, и ошибки в противном случае. Это позволяет средству проверки типов гарантировать, что возвращаемое значение является числом с плавающей точкой и может использоваться в любой функции, которая его ожидает.

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

float(value: <лобое>)
:: <число с плавающей точкой>, <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

любое

Значение, которое необходимо проверить на тип float.

да

Ошибки

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

  • value не является числом с плавающей точкой.

Примеры

Объявление типа float

Пример 87. Исходный код
float!(.value)
Пример 88. Результат
42

timestamp

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

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

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

value

любое

Значение, которое нужно обеспечить меткой времени.

да

Ошибки

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

  • value не является меткой времени.

Примеры

Объявление типа метки времени

Пример 89. Исходный код
ok, err = timestamp(.timestamp)
Пример 90. Результат
function call error for "timestamp" at (10:31): expected timestamp, got string

string

Возвращает value, если оно является строкой, иначе генерирует ошибку. Это гарантирует, что возвращаемое значение является строкой, которая может быть использована в любой функции, ожидающей строку.

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

string(value: <любой тип>)
:: <строка> , <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

любое

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

да

Ошибки

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

  • value не является строкой.

Примеры

Объявление типа строки

Пример 91. Исходный код
string!(.message)
Пример 92. Результат
{"поле": "значение"}

array

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

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

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

value

любое

Значение, проверяемое на предмет того, является ли оно массивом.

да

Ошибки

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

  • value не является массивом.

Примеры

Объявление массива

Пример 93. Исходный код
array!(.value)
Пример 94. Результат
[
  1,
  2,
  3
]

object

Возвращает value, если оно является объектом, иначе возвращает ошибку. Это позволяет проверить, что возвращаемое значение является объектом и может быть использовано в любой функции, ожидающей объект.

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

object(value: <любой тип>)
:: <объект>, <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

любое

Значение, которое требуется проверить

да

Ошибки

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

  • value не является объектом.

Примеры

Определение типа объекта

Пример 95. Исходный код
object!(.value)
Пример 96. Результат
{
  "field1": "value1",
  "field2": "value2"
}

Функции представлений чисел

format_number

Форматирует value в строковое представление числа.

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

format_number(value: <целое число | число с плавающей точкой>, [scale: <целое число>, decimal_separator: <строка>, grouping_separator: <строка>])
:: <строка>
Аргумент Тип Описание По умолчанию Обязателен

value

целое число число с плавающей точкой

Число для форматирования в строку.

да

scale

целое число

Количество десятичных знаков для отображения.

нет

decimal_separator

строка

Символ, используемый между целой и десятичной частями числа.

.

нет

grouping_separator

строка

Символ, используемый между каждой тысячной частью числа.

,

нет

Примеры

Форматирование числа (3 десятичных знака)

Пример 97. Исходный код
format_number(1234567.89, 3, decimal_separator: ".", grouping_separator: ",")
Пример 98. Результат
"1,234,567.890"

format_int

Форматирует целое число value в строковое представление с использованием заданного основания.

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

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

value

целое число

Число для форматирования.

да

base

целое число

Основание для форматирования числа. Должно быть между 2 и 36 включительно.

10

нет

Ошибки

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

  • Основание не находится между 2 и 36.

Примеры

Форматирование как шестнадцатеричное число

Пример 99. Исходный код
format_int!(42, 16)
Пример 100. Результат
"2a"

Форматирование как отрицательное шестнадцатеричное число

Пример 101. Исходный код
format_int!(-42, 16)
Пример 102. Результат
"-2a"

parse_int

Разбирает строку value, представляющую число в указанной системе счисления, в целое число.

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

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

value

строка

Строка для разбора.

да

base

целое число

Система счисления числа. Должна быть в диапазоне от 2 до 36 включительно.

Если не указано, для определения системы счисления будет использоваться префикс строки:

* 0b — двоичная; * 0, 0o — восьмеричная; * 0x — шестнадцатеричная; * в остальных случаях — десятеричная.

нет

Ошибки

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

  • Значение base не находится в диапазоне от 2 до 36;

  • Число не может быть разобрано в указанной системе счисления.

Примеры

Разбор десятичного числа

Пример 103. Исходный код
parse_int!("-42")
Пример 104. Результат
-42

Разбор двоичного числа

Пример 105. Исходный код
parse_int!("0b1001")
Пример 106. Результат
9

Разбор восьмеричного числа

Пример 107. Исходный код
parse_int!("0o42")
Пример 108. Результат
34

Разбор шестнадцатеричного числа

Пример 109. Исходный код
parse_int!("0x2a")
Пример 110. Результат
42

Разбор числа с явно указанной системой счисления

Пример 111. Исходный код
parse_int!("2a", 17)
Пример 112. Результат
44

parse_float

Разбирает строку value, представляющую число в десятичной системе счисления, в число с плавающей запятой.

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

parse_float(value: <строка>)
:: <строка>, <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

строка

Строка для разбора.

да

Ошибки

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

  • value не может быть разобрано как число.

  • Значение NaN не поддерживается.

Примеры

Разбор отрицательного числа

Пример 113. Исходный код
parse_float!("-42")
Пример 114. Результат
-42.0

Разбор числа с плавающей запятой

Пример 115. Исходный код
parse_float!("42.38")
Пример 116. Результат
42.38

Разбор экспоненциальной записи

Пример 117. Исходный код
parse_float!("2.5e3")
Пример 118. Результат
2500.0

to_int

Приводит value к целому числу.

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

to_int(value: <целое число | число с плавающей точкой | логическое значение | строка | метка времени>)
:: <целое число> , <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

целое число число с плавающей точкой логическое значение строка метка времени

Значение для преобразования в целое число.

да

Характеристики функции

Поведение функции зависит от типа value:

  • При преобразовании чисел с плавающей точкой отбрасывается дробная часть.

  • При преобразовании логических значений true преобразуется в 1, false в 0.

  • Строки преобразуются, только если состоят из десятичных чисел и знаков.

  • Метки времени преобразуются в формат времени Unix.

Ошибки

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

  • value является строкой, но текст не является целым числом

  • value не является строкой, числом или меткой времени

Примеры

Приведение строки к целому числу

Пример 119. Исходный код
to_int!("-02")
Пример 120. Результат
2

Приведение метки времени к целому числу

Пример 121. Исходный код
to_int(t'2020-12-30T22:20:53.824727Z')
Пример 122. Результат
1609366853

Приведение числа с плавающей точкой к целому числу

Пример 123. Исходный код
to_int(2.6)
Пример 124. Результат
2

to_float

Приводит value к типу с плавающей точкой.

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

to_float(value: <целое число | число с плавающей точкой | логическое значение | строка | метка времени>)
:: <число с плавающей точкой> , <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

целое число число с плавающей точкой логическое значение строка метка времени

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

да

Характеристики функции

Поведение функции зависит от типа value:

  • При преобразовании логических значений true принимает значение 1,false-- 0.

  • Строки преобразуются, только если состоят из десятичных чисел, знаков и десятичной точки.

  • Метки времени преобразуются в формат времени Unix с указанием наносекунд.

Ошибки

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

  • value не является поддерживаемым представлением числа с плавающей точкой.

Примеры

Приведение к числу с плавающей точкой

Пример 125. Исходный код
to_float!("3.145")
Пример 126. Результат
3.145

Приведение метки времени к числу с плавающей точкой

Пример 127. Исходный код
to_float(t'2020-12-30T22:20:53.824727Z')
Пример 128. Результат
1609366853.824727

Приведение строки к числу с плавающей точкой

Пример 129. Исходный код
to_float!(".5")
Пример 130. Результат
0.5

Функции преобразования чисел

abs

Вычисляет модуль числа value.

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

abs(value: <целое число | число с плавающей точкой>)
:: <целое число | число с плавающей точкой>
Аргумент Тип Описание По умолчанию Обязателен

value

целое число число с плавающей точкой

Число для вычисления модуля.

да

Примеры

Вычисление модуля целого числа

Пример 131. Исходный код
abs(-42)
Пример 132. Результат
42

Вычисление модуля числа с плавающей точкой

Пример 133. Исходный код
abs(-42.2)
Пример 134. Результат
42.2

ceil

Округляет value к большему до указанной точности precision.

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

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

value

целое число число с плавающей точкой

Число, которое нужно округлить вверх.

да

precision

целое число

Количество десятичных знаков для округления.

0

нет

Примеры

Округление числа к большему (без указания точности)

Пример 135. Исходный код
ceil(4.345)
Пример 136. Результат
5

Округление числа к большему (с указанием точности)

Пример 137. Исходный код
ceil(4.345, precision: 2)
Пример 138. Результат
4.35

floor

Округляет value вниз до указанной precision (точности).

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

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

value

целое число число с плавающей точкой

Число, которое нужно округлить вниз.

да

precision

целое число

Количество десятичных знаков для округления.

0

нет

Примеры

Округление числа вниз (без указания точности)

Пример 139. Исходный код
floor(4.345)
Пример 140. Результат
4

Округление числа вниз (с указанием точности)

Пример 141. Исходный код
floor(4.345, precision: 2)
Пример 142. Результат
4.34

round

Округляет value до указанной точности precision.

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

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

value

целое число число с плавающей точкой

Число для округления.

да

precision

целое число

Количество знаков после запятой для округления.

0

нет

Примеры

Округление числа (без указания точности)

Пример 143. Исходный код
round(4.345)
Пример 144. Результат
4

Округление числа (с указанием точности)

Пример 145. Исходный код
round(4.345, precision: 2)
Пример 146. Результат
4.35

mod

Вычисляет остаток от деления value на modulus.

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

mod(value: <целое число | число с плавающей точкой>, modulus: <целое число | число с плавающей точкой>)
:: <строка>, <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

целое число число с плавающей точкой

Значение, для которого применяется деление по модулю.

да

modulus

целое число число с плавающей точкой

Значение модуля.

да

Ошибки

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

  • value не является целым числом или числом с плавающей точкой.

  • modulus не является целым числом или числом с плавающей точкой.

  • modulus равен 0.

Примеры

Вычисление остатка от деления двух целых чисел

Пример 147. Исходный код
remainder = mod(5, 2)
Пример 148. Результат
1

Функции форматирования меток времени

from_unix_timestamp

Преобразует целое число value из формата времени Unix в формат времени VRL (timestamp).

Преобразует из количества секунд с начала эпохи Unix по умолчанию, но также можно указать миллисекунды или наносекунды с помощью параметра unit.

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

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

value

целое число

Целое число Unix-времени для преобразования

да

unit

строка

Единица измерения времени

seconds

нет

Примеры

Преобразование из формата Unix-времени (секунды)

Пример 149. Исходный код
from_unix_timestamp!(5)
Пример 150. Результат
1970-01-01T00:00:05Z

Преобразование из формата Unix-времени (миллисекунды)

Пример 151. Исходный код
from_unix_timestamp!(5000, unit: "milliseconds")
Пример 152. Результат
1970-01-01T00:00:05Z

Преобразование из формата Unix-времени (наносекунды)

Пример 153. Исходный код
from_unix_timestamp!(5000, unit: "nanoseconds")
Пример 154. Результат
1970-01-01T00:00:00.000005Z

to_unix_timestamp

Преобразует значение метки времени (value) в метку времени Unix.

По умолчанию возвращает количество секунд с момента начала эпохи Unix, но можно также указать миллисекунды или наносекунды через unit.

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

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

value

метка времени

Метка времени для преобразования в Unix.

да

unit

строка

Единица измерения времени.

seconds

нет

Примеры

Преобразование в метку времени Unix (секунды)

Пример 155. Исходный код
to_unix_timestamp(t'2021-01-01T00:00:00+00:00')
Пример 156. Результат
1609459200

Преобразование в метку времени Unix (миллисекунды)

Пример 157. Исходный код
to_unix_timestamp(t'2021-01-01T00:00:00Z', unit: "milliseconds")
Пример 158. Результат
1609459200000

Преобразование в метку времени Unix (наносекунды)

Пример 159. Исходный код
to_unix_timestamp(t'2021-01-01T00:00:00Z', unit: "nanoseconds")
Пример 160. Результат
1609459200000000000

format_timestamp

Форматирует value в строковое представление времени.

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

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

value

метка времени

Метка времени для форматирования в текст.

да

format

строка

Строка формата, описанная в библиотеке Chrono.

да

timezone

строка

Часовой пояс, используемый при форматировании метки времени. Используйте идентификатор TZ или 'local'.

нет

Примеры

Форматирование метки времени (ISO8601/RFC 3339)

Пример 161. Исходный код
format_timestamp!(t'2020-10-21T16:00:00Z', format: "%+")
Пример 162. Результат
2020-10-21T16:00:00+00:00

Форматирование метки времени (пользовательский формат)

Пример 163. Исходный код
format_timestamp!(t'2020-10-21T16:00:00Z', format: "%v %R")
Пример 164. Результат
21-Oct-2020 16:00

parse_timestamp

Разбирает value в формате strptime.

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

parse_timestamp(value: <строка>, format: <строка>)
:: <метка времени> , <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

строка

Текст времени.

да

format

строка

Формат strptime.

да

Ошибки

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

  • value не удалось разобрать с использованием предоставленного format.

Примеры

Разбор времени

Пример 165. Исходный код
parse_timestamp!("10-Oct-2020 16:00+00:00", format: "%v %R %:z")
Пример 166. Результат
2020-10-10T16:00:00Z

Функции приведения строк и логических значений

to_bool

Приводит value к логическому значению.

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

to_bool(value: <логическое значение | целое число | число с плавающей точкой | пустое значение | строка>)
:: <логическое значение> , <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

логическое значение целое число число с плавающей точкой пустое значение строка

Значение для преобразования в логическое значение.

да

Ошибки

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

  • value не является поддерживаемым представлением логического значения.

Примеры

Приведение к логическому значению (строка)

Пример 167. Исходный код
to_bool!("yes")
Пример 168. Результат
true

Приведение к логическому значению (число с плавающей точкой)

Пример 169. Исходный код
to_bool(0.0)
Пример 170. Результат
false

Приведение к логическому значению (целое число)

Пример 171. Исходный код
to_bool(0)
Пример 172. Результат
false

Приведение к логическому значению (null)

Пример 173. Исходный код
to_bool(null)
Пример 174. Результат
false

Приведение к логическому значению (логическое значение)

Пример 175. Исходный код
to_bool(true)
Пример 176. Результат
true

to_regex

Приводит value к регулярному выражению.

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

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

value

строка

Значение для преобразования в регулярное выражение

да

Примечания

У этой функции есть особое поведение, о котором стоит знать.

  • Компиляция регулярного выражения — это ресурсозатратная операция и может ограничивать пропускную способность Vector. Используйте эту функцию, только если вы абсолютно уверены, что нет другого способа.

Ошибки

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

  • value не является строкой.

Примеры

Приведение к регулярному выражению

Пример 177. Исходный код
to_regex("^foo$") ?? r''
Пример 178. Результат
^foo$

to_string

Приводит value к строке.

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

to_string(value: < целое число | число с плавающей точкой | логическое значение | строка | метка времени>)
:: <число с плавающей точкой | пустое значение>)
:: <строка> , <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

value

целое число число с плавающей точкой логическое значение строка метка времени пустое значение

Значение для преобразования в строку

да

Ошибки

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

  • value не является целым числом, числом с плавающей точкой, логическим значением, строкой, меткой времени или пустым значением

Примеры

Приведение к строке (логическое значение)

Пример 179. Исходный код
to_string(true)
Пример 180. Результат
"true"

Приведение к строке (целое число)

Пример 181. Исходный код
to_string(52)
Пример 182. Результат
"52"

Приведение к строке (число с плавающей точкой)

Пример 183. Исходный код
to_string(52.2)
Пример 184. Результат
"52.2"