Spec-Zone.ru › Scala 2.13 Reflection

Трейт scala.reflect.api.Symbols

trait Symbols extends AnyRef

ЭКСПЕРИМЕНТАЛЬНО

Этот трейт определяет символы и операции над ними.

Символы используются для установления связей между именем и сущностью, к которой оно относится, например, классом или методом. Всё, что вы определяете и можете назвать в Scala, имеет связанный с ним символ.

Символы содержат всю доступную информацию о объявлении сущности (класс/объект/трейт и т.д.) или члена (vals/vars/defs и т.д.), и как таковые являются важной абстракцией, центральной для как для времени выполнения рефлексии, так и для макросов.

Символ может предоставить множество информации, начиная от базового name метода, доступного для всех символов, до более сложных концепций, таких как получение baseClasses из ClassSymbol. Другие распространённые случаи использования символов включают проверку сигнатур членов, получение параметров типа класса, получение типа параметра метода или определение типа поля.

Пример использования рефлексии во время выполнения; получение сигнатуры типа метода:

scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._

scala> class C[T] { def test[U](x: T)(y: U): Int = ??? }
defined class C

scala> val test = typeOf[C[Int]].member(TermName("test")).asMethod
test: reflect.runtime.universe.MethodSymbol = method test

scala> test.info
res0: reflect.runtime.universe.Type = [U](x: T)(y: U)scala.Int

Символы организованы в иерархию. Например, символ, представляющий параметр метода, принадлежит соответствующему символу метода, символ метода принадлежит содержащему его классу, класс принадлежит содержащему пакету и так далее.

Некоторые типы узлов дерева, такие как Ident (ссылки на идентификаторы) и Select (ссылки на члены) предоставляют метод symbol для получения символа, представляющего их объявление. Во время фазы проверки типов компилятор ищет символ на основе имени и области видимости и устанавливает symbol поле узлов дерева.

Для получения дополнительной информации об использовании Symbol и связанных сложностях см. Руководство по рефлексии: Символы

Тип "self"
Universe
Источник
Symbols.scala
Линейные супертипы
AnyRef, Any
Известные подклассы
JavaUniverse, Universe, Universe

Члены типов

abstract тип ClassSymbol >: Null <: Universe.ClassSymbolApi with Universe.TypeSymbol

тракт ClassSymbolApi extends Universe.TypeSymbolApi

API символов классов. Основным источником информации о символах является страница Symbols.

Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

abstract тип MethodSymbol >: Null <: Universe.MethodSymbolApi with Universe.TermSymbol

тракт MethodSymbolApi extends Universe.TermSymbolApi

API символов методов. Основным источником информации о символах является страница Symbols.

Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

abstract тип ModuleSymbol >: Null <: Universe.ModuleSymbolApi with Universe.TermSymbol

тракт ModuleSymbolApi extends Universe.TermSymbolApi

API символов модулей. Основным источником информации о символах является страница Symbols.

Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

abstract тип Symbol >: Null <: Universe.SymbolApi

тракт SymbolApi extends AnyRef

API символов. Основным источником информации о символах является страница Symbols.

Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

abstract тип TermSymbol >: Null <: Universe.TermSymbolApi with Universe.Symbol

тракт TermSymbolApi extends Universe.SymbolApi

API символов членов. Основным источником информации о символах является страница Symbols.

Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

abstract тип TypeSymbol >: Null <: Universe.TypeSymbolApi with Universe.Symbol

тракт TypeSymbolApi extends Universe.SymbolApi

API символов типов. Основным источником информации о символах является страница Symbols.

Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

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

abstract val NoSymbol: Universe.Symbol

Специальный символ "отсутствия". Часто используется в API для обозначения значения по умолчанию или пустого значения.

Конкретные члены значения

final def !=(arg0: Any): Boolean

Определяющие классы
AnyRef → Any

final def ##(): Int

Определяющие классы
AnyRef → Any

def +(other: String): String

Неявный
Этот член добавлен с помощью неявного преобразования из Symbols в any2stringadd[Symbols] с помощью метода any2stringadd в scala.Predef.
Определяющие классы
any2stringadd

def ->[B](y: B): (Symbols, B)

Неявный
Этот член добавлен с помощью неявного преобразования из Symbols в ArrowAssoc[Symbols] с помощью метода ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

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()

def ensuring(cond: (Symbols) => Boolean, msg: => Any): Symbols

Неявный
Этот член добавлен с помощью неявного преобразования из Symbols в Ensuring[Symbols] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: (Symbols) => Boolean): Symbols

Неявный
Этот член добавлен с помощью неявного преобразования из Symbols в Ensuring[Symbols] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean, msg: => Any): Symbols

Неявный
Этот член добавлен с помощью неявного преобразования из Symbols в Ensuring[Symbols] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean): Symbols

Неявный
Этот член добавлен с помощью неявного преобразования из Symbols в Ensuring[Symbols] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

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])

def formatted(fmtstr: String): String

Неявный
Этот член добавлен с помощью неявного преобразования из Symbols в StringFormat[Symbols] с помощью метода StringFormat в scala.Predef.
Определяющие классы
StringFormat
Аннотации
@inline()

final def getClass(): Class[_ <: AnyRef]

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Definition Classes
AnyRef → Any
Annotations
@native()

final def isInstanceOf[T0]: Boolean

Definition Classes
Any

final def ne(arg0: AnyRef): Boolean

Definition Classes
AnyRef

final def notify(): Unit

Definition Classes
AnyRef
Annotations
@native()

final def notifyAll(): Unit

Definition Classes
AnyRef
Annotations
@native()

final def synchronized[T0](arg0: => T0): T0

Definition Classes
AnyRef

def toString(): String

Definition Classes
AnyRef → Any

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@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/Symbols.html

Spec-Zone.ru

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