Типы данных
В системе присутствует различный функционал, связанный с различного рода управлением внутренними для модели данными (например, хранение значений свойств и метаданных, а также вычисление выражений в дереве решений).
Чтобы система могла четко понимать характер данных, с которыми она работает, в ней реализован механизм типов данных.
Типы данных в системе по смыслу и назначению аналогичны типам данных, существующих во всех строго типизированных языках программирования (той же 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 ) |
- |