package types
- Alphabetic
- Public
- All
Type Members
-
case class
AnyVariant(name: String) extends GenericParam with Product with Serializable
Тип переменная
TypeVariableможет указывать на любой тип.Тип переменная
TypeVariableможет указывать на любой тип.- name
имя переменной
-
trait
Assignable extends AnyRef
Проверка возможности выполнеия операции присвоения (или передачи значения) над типами данных
Проверка возможности выполнеия операции присвоения (или передачи значения) над типами данных
Допустим есть две переменных разных типов:
- a : number
- b : int
тогда:
- a.assignable( b ) = true
- b.assignable( a ) = false
-
class
CallableFn extends Fn with Invoke
Функция с возможностью вызова
-
case class
CoVariant(name: String, tip: Type) extends GenericParam with Product with Serializable
Тип переменная
TypeVariableуказывает на ковариантный тип: selfType.Тип переменная
TypeVariableуказывает на ковариантный тип: selfType. assignable( someType ).- name
имя переменной
- tip
тип переменной
-
case class
ContraVariant(name: String, tip: Type) extends GenericParam with Product with Serializable
Тип переменная
TypeVariableуказывает на контрвариантный тип: someType.Тип переменная
TypeVariableуказывает на контрвариантный тип: someType. assignable( selfType ).- name
имя переменной
- tip
тип переменной
-
trait
Extendable extends Assignable
Производные типы данных - "наследование"
-
class
Field extends Named
Поле класса / Атрибут класса
-
class
Fields extends Seq[Field]
Имутабельный список полей класса
-
class
Fn extends Fun
Функция.
Функция.
Для создания вызываемой функции используйте invoke / invoking
Пример создания функции
-
Fn(Params("a" -> INT),INT) - Создает функцию с одним аргментом
- имя аргумента a,
- тип аргмента INT
- возвращает тип INT
-
Fn(
GenericParams(
AnyVariant("A"), AnyVariant("B") ),
Params(
"a" -> TypeVariable("A", Type.FN) ),
TypeVariable("B", Type.FN)
)- Создает функцию с типа параметрами (GenericParams) A, B - Один аргумент, с именем a и типом переменной A - Тип результата - тип переменная B - сигнатура (toString()) =[A,B](a:A):B
-
-
trait
Freezing extends AnyRef
"Заморозка" изменений в мутабельном объекте, Разморозки не предполагается - только клонирование
-
trait
Fun extends Type with TypeVarReplace[Fun] with TypeVarFetch
Функция/метод
Функция/метод
- Функция сама по себе является типом
- Функция может содержаеть параметрические типы (типы переменные)
- Переменные типа (TypeVariable) могут ссылаться (owner):
- На класс в случае метода: owner=THIS
- На саму функцию: owner=FN
- Метод в качестве первого аргмента должен принимать ссылку на объект, с типом THIS
-
class
Funs extends Seq[Fun]
Иммутабельный список функций
-
class
GenericInstance[A <: Type with TypeVarReplace[A]] extends Type with TypeVarReplace[GenericInstance[A]] with TypeVarFetch
Тип данных - экземпляр переменной параметрезированного типа
Тип данных - экземпляр переменной параметрезированного типа
- A
Объект реализующий TypeVarReplace
- See also
TypeVarReplace
-
sealed
trait
GenericParam extends Type with Named
Тип параметра - модели ковариантности
-
class
GenericParams extends Seq[GenericParam]
Коллекция типов-параметров
-
trait
Genericable extends Assignable
Патаметры типа
-
trait
Invoke extends AnyRef
Вызов функции
-
sealed
trait
LocatorItem extends AnyRef
Компонент пути локатора вложенного типа
TypeVarLocator -
case class
LocatorItemFunParam(fun: Fun, param: Param, next: Option[LocatorItem]) extends LocatorItem with Product with Serializable
Компонент указывает на параметр функции
Компонент указывает на параметр функции
- fun
Функции
- param
Параметр
- next
Следующий компонент
-
case class
LocatorItemFunResult(fun: Fun, next: Option[LocatorItem]) extends LocatorItem with Product with Serializable
Компонент указывает на результат функции
Компонент указывает на результат функции
- fun
Функции
- next
Следующий компонент
-
case class
LocatorItemGenericInstance[A <: Type with TypeVarReplace[A]](gi: GenericInstance[A], param: String, next: Option[LocatorItem]) extends LocatorItem with Product with Serializable
Компонент указывает на GenericInstance
Компонент указывает на GenericInstance
- gi
GenericInstance
- param
Параметр
- next
Следующий компонент
-
class
Methods extends Seq[(String, Fun)]
Методы объекта
-
class
MutableFields extends Fields with Freezing
Мутабельный список полей/аттрибутов класса
-
class
MutableFuns extends Funs with Freezing
Мутабельный список функций
-
class
MutableGenericParams extends GenericParams with Freezing
Мутабельная коллекция типов-параметров
-
class
MutableMethods extends Methods with Freezing
Мутабельный список методов объекта
-
trait
Named extends AnyRef
Именнованое значение, например тип данных или поле класса
-
trait
Obj extends Type with Named
Интерфейс класса, любой клас обладает:
Интерфейс класса, любой клас обладает:
- Списком полей/атрибутов
- Список методов
-
class
Param extends Named with TypeVarReplace[Param]
Параметр метода / функции
-
class
Params extends Seq[Param] with TypeVarReplace[Params] with TypeVarFetch
Параметры метода/функции
-
class
TObject extends Obj with TypeVarReplace[TObject] with Freezing
Определение класса данных/объектов
-
trait
Type extends Assignable with Extendable with Genericable
Описывает тип данных
-
class
TypeError extends Error
Ошибка при работе с типами данных, может быть как ошибка компилятора, так и пользователя компилятора
-
trait
TypeVarFetch extends AnyRef
Извлечение переменных
xyz.cofe.stsl.types.TypeVariable -
class
TypeVarLocator extends AnyRef
Описывает расположение переменной типа
TypeVariableвGenericInstance,Fun -
trait
TypeVarReplace[A] extends AnyRef
Замена переменной Типа.
Замена переменной Типа.
Актуально когда есть параметризированный тип, например List с параметром A.
List[A] { add( item : A ) }Для правильной проверке типов и соответ вывода типов, необходима процедура замены переменных на реальные значения.
Для примера возьмем тип User:
User { name : String enabled : Boolean }Создадим переменную типа List, которая может создержать только элементы типа User. Для java кода это так:
var userList = new List<User>В нашем случае это такой код:
val userList = new GenericInstance( Map("A"->userType), listType )Тогда при вызове
userList.add( something )будет выведен новый тип для userList:
List { add( item: User ) }Этот вывод новго типа осуществляется за счет TypeVarReplace.
- A
Объект реализующий TypeVarReplace
- class TypeVarReplacer extends AnyRef
-
class
TypeVariable extends Type with Named
Переменная типа - т.е переменная для подстановки типов
xyz.cofe.stsl.types.TypeVarReplace -
class
WriteableField extends Field
Поле объекта с поддержкой записи
Value Members
- object Fields
-
object
Fn
Создание функции
- object Funs
- object GenericInstance
- object GenericParams
-
object
JvmType
Прикладные JVM типы данных
- object LocatorItem
- object Param
- object Params
- object TObject
-
object
Type
Предопределенные типы
- object TypeDescriber
- object TypeError extends Serializable
- object TypeVariable