t

xyz.cofe.stsl.types

TypeVarReplace

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

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. TypeVarReplace
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def typeVarReplace(recipe: (TypeVariable) ⇒ Option[Type]): A

    Замена переменных

    Замена переменных

    recipe

    правило замены

    returns

    новый тип

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @HotSpotIntrinsicCandidate()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  9. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  10. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  11. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  12. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  13. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  14. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  15. def toString(): String
    Definition Classes
    AnyRef → Any
  16. def typeVarReplace(recipe: (String, Type)*): A

    Замена переменных

    Замена переменных

    recipe

    правило замены

    returns

    новый тип

  17. def typeVarReplacer(recipe: Consumer[TypeVarReplacer]): A
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  20. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. object typeVarBake

    Замена переменных

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated @deprecated
    Deprecated

    (Since version ) see corresponding Javadoc for more information.

Inherited from AnyRef

Inherited from Any

Ungrouped