Spec-Zone.ru › Scala 2.13 Reflection

Annotation scala.reflect.api.Trees.LabelDef

Companion class LabelDefExtractor

abstract type LabelDef >: Null <: Universe.LabelDefApi with Universe.DefTree with Universe.TermTree

Определённое выражение. Не выражается в синтаксисе языка, но генерируется компилятором для моделирования циклов while/do-while, а также для сопоставления с образцом.

Метка действует почти как вложенная функция, где params представляет входные параметры. Символ, присвоенный LabelDef, должен иметь тип MethodType, как если бы это была вложенная функция.

Прыжки — это узлы apply, которые снабжены символом метки. Аргументы из узла apply будут переданы метке и присвоены идентификаторам.

Внутри блока разрешены переходы вперёд.

Source
Trees.scala
Linear Supertypes
Universe.<refinement>, Universe.<refinement>, Universe.<refinement>, Universe.<refinement>, Universe.<refinement>, Universe.LabelDefApi, Universe.TermTreeApi, Universe.DefTreeApi, Universe.NameTreeApi, Universe.SymTreeApi, Universe.TreeApi, Product, Equals, AnyRef, Any

Абстрактные члены значения

abstract def canEqual(that: Any): Boolean

Определение классов
Equals

abstract def canHaveAttrs: Boolean

Может ли это дерево содержать атрибуты (т.е. символы, типы или позиции)? Обычно ответ — да, за исключением объекта EmptyTree null и двух специальных одиночных элементов: 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 isDef: Boolean

Представляет ли это дерево определение? (метода, класса и т.д.)

Определение классов
TreeApi

abstract def isEmpty: Boolean

Является ли это дерево одним из пустых деревьев?

Пустые деревья: объект EmptyTree null и экземпляры TypeTree, которые не содержат тип.

Определение классов
TreeApi
См. также

canHaveAttrs

abstract def isTerm: Boolean

Канонический способ проверки, представляет ли Tree термин.

Определение классов
TreeApi

abstract def isType: Boolean

Канонический способ проверить, представляет ли дерево тип.

Определяющие классы
TreeApi

абстрактное def name: Universe.TermName

Базовое имя. Например, часть List в Ident(TermName("List")).

Определяющие классы
LabelDefApi → DefTreeApi → NameTreeApi

абстрактное def nonEmpty: Boolean

Является ли это дерево непустым?

Определяющие классы
TreeApi
См. также

isEmpty

абстрактное def orElse(alt: => Universe.Tree): Universe.Tree

Предоставляет альтернативу, если дерево пустое

alt

Альтернативное дерево

возвращает

Если это дерево непустое, это дерево, в противном случае alt.

Определяющие классы
TreeApi

абстрактное def params: List[Universe.Ident]

Параметры метки — имена, которые можно использовать в теле метки. См. пример для scala.reflect.api.Trees#LabelDefExtractor.

Определяющие классы
LabelDefApi

абстрактное def pos: Universe.Position

Позиция дерева.

Определяющие классы
TreeApi

абстрактное def productArity: Int

Определяющие классы
Product

абстрактное def productElement(n: Int): Any

Определяющие классы
Product

абстрактное def rhs: Universe.Tree

Тело метки. См. пример для scala.reflect.api.Trees#LabelDefExtractor.

Определяющие классы
LabelDefApi

абстрактное def symbol: Universe.Symbol

Символ дерева.

Для большинства деревьев символ — null. В SymTree это переопределено и реализовано с помощью переменной, инициализированной NoSymbol.

Деревья, которые не являются SymTree и которые несут символы, делают это, переопределяя def symbol, чтобы передать их в другое место. Примеры:

    Super(qual, _) имеет символ qual, Apply(fun, args) имеет символ fun, TypeApply(fun, args) имеет символ fun, AppliedTypeTree(tpt, args) имеет символ tpt, TypeTree(tpe) имеет символ tpe's typeSymbol, если tpe != null.
Определяющие классы
SymTreeApi → TreeApi

абстрактное def tpe: Universe.Type

Тип дерева.

При создании большинство деревьев имеют свой tpe, установленный в null. Типы обычно присваиваются деревьям во время проверки типов. Некоторые методы фабрики узлов устанавливают tpe сразу после создания.

Когда проверка типов сталкивается с деревом с ненулевым типом, она предполагает, что он правильный, и не проверяет его снова. Это означает, что нужно быть осторожным, не удаляя поле tpe дочерних деревьев.

Определяющие классы
TreeApi

абстрактное def withFilter(f: (Universe.Tree) => Boolean): List[Universe.Tree]

Находит все поддеревья, соответствующие предикату p. То же, что и filter

Определяющие классы
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$LabelDef.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API