Типы данных

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

Типы данных в системе по смыслу и назначению аналогичны типам данных, существующих во всех строго типизированных языках программирования (той же Java).

В коде классы, связанные с типизацией данных, расположены в пакете its.model.definition.types.
Основные классы, представляющие отдельные типы данных, являются наследниками класса Type, и предоставляют следующий функционал:

  • метод fits(value) - можно ли привести значение value к данному типу
  • метод castFits(subType) - можно ли привести тип subType к данному типу
  • метод Type.of(value) - вернуть тип переданного значения.

В таблице ниже представлен список типов данных, поддерживаемых в системе на данный момент.

Тип Название в коде Какие значения принимает Параметры
Булевы значения BooleanType Kotlin, Java: Boolean -
Целые числа IntegerType Kotlin: Int
Java: Integer
IntegerType.range - диапазон значений, допускаемых в данном типе
Дробные числа DoubleType Kotlin, Java: Double DoubleType.range - диапазон значений, допускаемых в данном типе
Строки StringType Kotlin, Java: String -
Перечисления EnumType Kotlin, Java: EnumValueRef
Kotlin: EnumValue (typealias для EnumValueRef)
EnumType.enumName - название перечисления, для которого определяется данный тип
Классы ClassType Kotlin, Java: ClassRef
Kotlin: Clazz (typealias для ClassRef)
ClassRef.className - название класса, наследники которого допустимы данным типом
Объекты ObjectType Kotlin, Java: ObjectRef
Kotlin: Obj (typealias для ObjectRef)
ObjectRef.className - название класса, экземпляры которого допустимы данным типом
Любое из перечисленного

Используется, когда нужно указать не неважность типа.
AnyType Kotlin: Any
Java: Object
-
Отсутствие значения

Системный тип, используется когда нужно указать что выражение не имеет возвращаемого типа - как void/Unit функция.

Данный тип используется для реализации управляющих конструкций.
Скорее всего, в будущем его стоит убрать, а управляющие конструкции выделить из выражений
NoneType -
(В Kotlin для обозначения отсутствия есть Unit)
-