Типы данных и конвертация типов
Язык выражений внутренне имеет дело со следующими типами (и возвращает значения этих типов):
Тип | Описание |
Null | Null обозначает "отсутствие значения". Это значение может быть записано в ячейку таблицы данных только если поле может быть NULL. |
Object | Супертип всех типов. Если объявляется, что функция возвращает Object, она может возвращать значения любого типа в зависимости от входных параметров. |
Number | Супертип всех числовых типов. Если объявляется, что функция обрабатывает Number, она может обрабатывать данные типа Integer, Long, Float или Double. Дополнительно, все прочие объекты будут преобразованы в числовые, насколько это возможно. |
Integer | 32-битное целое число со знаком. |
Long | 64-битное целое число со знаком. |
Float | 32-битное число с плавающей запятой. |
Double | 64-битное число с плавающей запятой. |
String | Строка любой длины. Строки могут также содержать бинарные данные. |
Boolean | TRUE или FALSE |
Color | 8-битное значение цвета (RGB). |
Date | Временная метка, содержащая как дату, так и время. Может использоваться функциями обработки даты/времени. |
Data Table |
Все типы имеют аналоги среди типов полей таблицы данных.
Выражения, которые оцениваются как числовой тип Float или Double, следуют стандарту IEEE_754 для арифметических операций. Например, выражение 1/0 оценивается как бесконечность (Infinity), а 0/0 оценивается как не число (NaN). |
Конвертация типов
Движок обработки языка выражений делает все возможное для необходимой конвертации типов данных и вычисления выражения с получением результата. Например, если числовой аргумент передан функции, которая обрабатывает строки, число автоматически конвертируется в свою строковую репрезентацию. Другой пример: если число с плавающей запятой добавляется к целому числу, результирующее значение тоже будет числом с плавающей запятой. Это помогает избежать ошибок округления.
Если правильная конвертация типа невозможна, вычисление выражения выдает сбой c сообщением об ошибке.
Явная конвертация типов осуществляется с использованием функций конвертации типов.