Annotation scala.reflect.api.Trees.UnApply
Companion class UnApplyExtractor
abstract type UnApply >: Null <: Universe.UnApplyApi with Universe.TermTree
Абстрактные члены значения
abstract def args: List[Universe.Tree]
Аргументы отмены применения. См. пример для scala.reflect.api.Trees#UnApplyExtractor.
- Определяющие классы
- UnApplyApi
abstract def canEqual(that: Any): Boolean
- Определяющие классы
- Equals
abstract def canHaveAttrs: Boolean
Может ли это дерево содержать атрибуты (т.е. символы, типы или позиции)? Как правило, ответ — да, за исключением EmptyTree нулевого объекта и двух специальных одиночных элементов: noSelfType и pendingSuperCall.
- Определяющие классы
- TreeApi
abstract def children: List[Universe.Tree]
Прямые дочерние деревья этого дерева. EmptyTrees всегда опускаются. Списки выравниваются.
- Определяющие классы
- TreeApi
abstract def collect[T](pf: PartialFunction[Universe.Tree, T]): List[T]
Применить pf к каждому поддереву, на котором определена функция, и собрать результаты.
- Определяющие классы
- TreeApi
abstract def duplicate: TreeApi.this.type
Создать копию этого дерева, сохранив все атрибуты, за исключением того, что все позиции сфокусированы (поэтому ничего в этом дереве не будет найдено при поиске по позиции).
- Определяющие классы
- TreeApi
abstract def equalsStructure(that: Universe.Tree): Boolean
Проверяет, являются ли два дерева структурно равными. Обратите внимание, что == в деревьях — это равенство ссылок.
- Определяющие классы
- TreeApi
abstract def exists(p: (Universe.Tree) => Boolean): Boolean
Существует ли часть этого дерева, которая удовлетворяет предикату p?
- Определяющие классы
- TreeApi
abstract def filter(f: (Universe.Tree) => Boolean): List[Universe.Tree]
Найти все поддеревья, соответствующие предикату p. То же самое, что withFilter
- Определяющие классы
- TreeApi
abstract def find(p: (Universe.Tree) => Boolean): Option[Universe.Tree]
Возвращает, необязательно, первое дерево (в обходе в прямом порядке), которое удовлетворяет предикату p, или None, если такового не существует.
- Определяющие классы
- TreeApi
abstract def forAll(p: (Universe.Tree) => Boolean): Boolean
Удовлетворяют ли все части этого дерева предикату p?
- Определяющие классы
- TreeApi
abstract def foreach(f: (Universe.Tree) => Unit): Unit
Применить f к каждому поддереву
- Определяющие классы
- TreeApi
abstract def fun: Universe.Tree
Узловой элемент-заглушка, который несет тип отмены применения. См. пример для scala.reflect.api.Trees#UnApplyExtractor.
- Определяющие классы
- UnApplyApi
abstract def isDef: Boolean
Представляет ли это дерево определение? (метода, класса и т.д.)
- Definition Classes
- TreeApi
abstract def isEmpty: Boolean
Является ли это дерево пустым деревом?
Пустые деревья: объект EmptyTree null и экземпляры TypeTree, которые не несут тип.
- Definition Classes
- TreeApi
- См. также
canHaveAttrs
abstract def isTerm: Boolean
Канонический способ проверить, представляет ли дерево терм.
- Definition Classes
- TreeApi
abstract def isType: Boolean
Канонический способ проверить, представляет ли дерево тип.
- Definition Classes
- TreeApi
abstract def nonEmpty: Boolean
Является ли это дерево непустым?
- Definition Classes
- TreeApi
- См. также
isEmpty
abstract def orElse(alt: => Universe.Tree): Universe.Tree
Предоставляет альтернативу, если дерево пустое.
- alt
Альтернативное дерево
- returns
Если это дерево непустое, возвращает это дерево, иначе
alt.
- Definition Classes
- TreeApi
abstract def pos: Universe.Position
Позиция дерева.
- Definition Classes
- TreeApi
abstract def productArity: Int
- Definition Classes
- Product
abstract def productElement(n: Int): Any
- Definition Classes
- Product
abstract def symbol: Universe.Symbol
Символ дерева.
Для большинства деревьев символ равен null. В SymTrees он переопределён и реализован как переменная, инициализированная NoSymbol.
Деревья, которые не являются SymTrees, но которые несут символы, делают это, переопределяя def symbol для перенаправления в другое место. Примеры:
Super(qual, _) имеет символ qual,
Apply(fun, args) имеет символ fun,
TypeApply(fun, args) имеет символ fun,
AppliedTypeTree(tpt, args) имеет символ tpt,
TypeTree(tpe) имеет символ tpe's typeSymbol, если tpe != null. - Definition Classes
- TreeApi
abstract def tpe: Universe.Type
Тип дерева.
При создании у большинства деревьев tpe устанавливается в null. Типы обычно присваиваются деревьям во время проверки типов. Некоторые методы фабрики узлов устанавливают tpe сразу после создания.
Когда проверка типов сталкивается с деревом, у которого tpe не равно null, она предполагает его корректность и не проверяет его снова. Это означает, что нужно быть осторожным, чтобы не удалить поле tpe в поддеревьях.
- Definition Classes
- TreeApi
abstract def withFilter(f: (Universe.Tree) => Boolean): List[Universe.Tree]
Найдите все поддеревья, удовлетворяющие предикату p. То же самое, что и filter.
- Definition Classes
- TreeApi
Члены конкретных значений
final def !=(arg0: Any): Boolean
- Определения классов
- AnyRef → Any
final def ##(): Int
- Определения классов
- AnyRef → Any
final def ==(arg0: Any): Boolean
- Определения классов
- AnyRef → Any
final def asInstanceOf[T0]: T0
- Определения классов
- Any
def clone(): AnyRef
- Атрибуты
- protected[java.lang]
- Определения классов
- AnyRef
- Аннотации
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
final def eq(arg0: AnyRef): Boolean
- Определения классов
- AnyRef
def equals(arg0: AnyRef): Boolean
- Определения классов
- AnyRef → Any
def finalize(): Unit
- Атрибуты
- protected[java.lang]
- Определения классов
- AnyRef
- Аннотации
- @throws(classOf[java.lang.Throwable])
final def getClass(): Class[_ <: AnyRef]
- Определения классов
- AnyRef → Any
- Аннотации
- @native()
def hashCode(): Int
- Определения классов
- AnyRef → Any
- Аннотации
- @native()
final def isInstanceOf[T0]: Boolean
- Определения классов
- Any
final def ne(arg0: AnyRef): Boolean
- Определения классов
- AnyRef
final def notify(): Unit
- Определения классов
- AnyRef
- Аннотации
- @native()
final def notifyAll(): Unit
- Определения классов
- AnyRef
- Аннотации
- @native()
def productElementName(n: Int): String
- Определения классов
- Product
def productElementNames: Iterator[String]
- Определения классов
- Product
def productIterator: Iterator[Any]
- Определения классов
- Product
def productPrefix: String
- Определения классов
- Product
final def synchronized[T0](arg0: => T0): T0
- Определения классов
- AnyRef
def toString(): String
Получает строковое представление дерева
- Определения классов
- TreeApi → AnyRef → Any
final def wait(): Unit
- Определения классов
- AnyRef
- Аннотации
- @throws(classOf[java.lang.InterruptedException])
final def wait(arg0: Long, arg1: Int): Unit
- Определения классов
- AnyRef
- Аннотации
- @throws(classOf[java.lang.InterruptedException])
final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/Trees$UnApply.html
Используется для представления методов
unapplyв сопоставлении с образцом.Например:
2 match { case Foo(x) => x }Представляется как:
Match( Literal(Constant(2)), List( CaseDef( UnApply( // a dummy node that carries the type of unapplication to patmat // the <unapply-selector> here doesn't have an underlying symbol // it only has a type assigned, therefore after `untypecheck` this tree is no longer typeable Apply(Select(Ident(Foo), TermName("unapply")), List(Ident(TermName("<unapply-selector>")))), // arguments of the unapply => nothing synthetic here List(Bind(TermName("x"), Ident(nme.WILDCARD)))), EmptyTree, Ident(TermName("x")))))Вводится типером. Удаляется фазами компилятора patmat (в новом сопоставлении с образцом 2.10) или explicitouter (в старом сопоставлении с образцом до 2.10).