Типы данных
В системе присутствует различный функционал, связанный с различного рода управлением внутренними для модели данными (например, хранение значений свойств и метаданных, а также вычисление выражений в дереве решений).
Чтобы система могла четко понимать характер данных, с которыми она работает, в ней реализован механизм типов данных.
Типы данных в системе по смыслу и назначению аналогичны типам данных, существующих во всех строго типизированных языках программирования (той же Java).
В коде классы, связанные с типизацией данных, расположены в пакете its.model.definition.types.
Основные классы, представляющие отдельные типы данных, являются наследниками класса Type, и предоставляют следующий функционал:
- метод
fits(value)- можно ли привести значениеvalueк данному типу - метод
castFits(subType)- можно ли привести типsubTypeк данному типу - метод
Type.of(value)- вернуть тип переданного значения.
В таблице ниже представлен список типов данных, поддерживаемых в системе на данный момент.
| Тип | Название в коде | Какие значения принимает | Параметры |
|---|---|---|---|
| Булевы значения | BooleanType |
Kotlin, Java: Boolean |
- |
| Целые числа | IntegerType |
Kotlin: IntJava: Integer |
IntegerType.range - диапазон значений, допускаемых в данном типе |
| Дробные числа | DoubleType |
Kotlin, Java: Double |
DoubleType.range - диапазон значений, допускаемых в данном типе |
| Строки | StringType |
Kotlin, Java: String |
- |
| Перечисления | EnumType |
Kotlin, Java: EnumValueRefKotlin: EnumValue (typealias для EnumValueRef) |
EnumType.enumName - название перечисления, для которого определяется данный тип |
| Классы | ClassType |
Kotlin, Java: ClassRefKotlin: Clazz (typealias для ClassRef) |
ClassRef.className - название класса, наследники которого допустимы данным типом |
| Объекты | ObjectType |
Kotlin, Java: ObjectRefKotlin: Obj (typealias для ObjectRef) |
ObjectRef.className - название класса, экземпляры которого допустимы данным типом |
| Любое из перечисленного Используется, когда нужно указать не неважность типа. |
AnyType |
Kotlin: AnyJava: Object |
- |
| Отсутствие значения Системный тип, используется когда нужно указать что выражение не имеет возвращаемого типа - как void/Unit функция. Данный тип используется для реализации управляющих конструкций. Скорее всего, в будущем его стоит убрать, а управляющие конструкции выделить из выражений |
NoneType |
- (В Kotlin для обозначения отсутствия есть Unit) |
- |