Spec-Zone.ru › Scala 2.13 Library

Особенность scala.Singleton

final trait Singleton extends Any

Singleton используется компилятором в качестве супертипа для типов одиночек. Это включает в себя литеральные типы, поскольку они также являются типами одиночек.

scala> object A { val x = 42 }
defined object A

scala> implicitly[A.type <:< Singleton]
res12: A.type <:< Singleton = generalized constraint

scala> implicitly[A.x.type <:< Singleton]
res13: A.x.type <:< Singleton = generalized constraint

scala> implicitly[42 <:< Singleton]
res14: 42 <:< Singleton = generalized constraint

scala> implicitly[Int <:< Singleton]
^
error: Cannot prove that Int <:< Singleton.

Singleton имеет особое значение, когда оно появляется в качестве верхнего ограничения формального параметра типа. Обычно, вывод типов в Scala расширяет типы одиночек до базового не-одиночного типа. Когда параметр типа имеет явное верхнее ограничение Singleton, компилятор выводит тип одиночки.

scala> def check42[T](x: T)(implicit ev: T =:= 42): T = x
check42: [T](x: T)(implicit ev: T =:= 42)T

scala> val x1 = check42(42)
^
error: Cannot prove that Int =:= 42.

scala> def singleCheck42[T <: Singleton](x: T)(implicit ev: T =:= 42): T = x
singleCheck42: [T <: Singleton](x: T)(implicit ev: T =:= 42)T

scala> val x2 = singleCheck42(42)
x2: Int = 42

См. также SIP-23 о типах одиночек на основе литералов.

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

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

Возвращает представление класса объекта в среде выполнения.

returns

объект класса, соответствующий типу получателя в среде выполнения.

Definition Classes
Any
Linear Supertypes
Any

Члены-значения конкретных типов

final def !=(arg0: Any): Boolean

Проверка двух объектов на неравенство.

returns

true если !(this == that), в противном случае false.

Definition Classes
Any

final def ##(): Int

Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для чисел возвращает значение хэша, согласованное с равенством значений: если два экземпляра типа значения сравниваются как true, то ## для каждого из них будет возвращать одинаковое значение хэша. Для null возвращает хэш-код, где null.hashCode вызывает NullPointerException.

returns

значение хэша, согласованное с ==

Definition Classes
Any

def +(other: String): String

Implicit
Этот член добавлен неявным преобразованием из Singleton в any2stringadd[Singleton] при помощи метода any2stringadd в scala.Predef.
Definition Classes
any2stringadd

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

Implicit
Этот член добавлен неявным преобразованием из Singleton в ArrowAssoc[Singleton] при помощи метода ArrowAssoc в scala.Predef.
Definition Classes
ArrowAssoc
Annotations
@inline()

final def ==(arg0: Any): Boolean

Проверка двух объектов на равенство. Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

returns

true если объект-получатель эквивалентен аргументу; false в противном случае.

Definition Classes
Any

final def asInstanceOf[T0]: T0

Приведение типа объекта-получателя к типу T0.

Обратите внимание, что успех приведения типов во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] выбросит ClassCastException во время выполнения, в то время как выражение List(1).asInstanceOf[List[String]] этого не сделает. В последнем примере, из-за того, что аргумент типа стёрт во время компиляции, невозможно проверить, являются ли элементы списка нужного типа.

returns

объект-получатель.

Definition Classes
Any
Исключения

ClassCastException, если объект-получатель не является экземпляром стирания типа T0.

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

Implicit
Этот член добавлен неявным преобразованием из Singleton в Ensuring[Singleton] при помощи метода Ensuring в scala.Predef.
Definition Classes
Ensuring

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

Implicit
Этот член добавлен неявным преобразованием из Singleton в Ensuring[Singleton] при помощи метода Ensuring в scala.Predef.
Definition Classes
Ensuring

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

Implicit
Этот член добавлен неявным преобразованием из Singleton в Ensuring[Singleton] при помощи метода Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean): Singleton

Неявное
Этот член добавлен неявно посредством преобразования из Singleton в Ensuring[Singleton] с помощью метода Ensuring в scala.Predef.
Классы-определения
Ensuring

def equals(arg0: Any): Boolean

Сравнивает текущий объект (this) с объектом-аргументом (that) на предмет эквивалентности.

Любое реализация этого метода должна быть отношением эквивалентности:

    Он является рефлексивным: для любого экземпляра x типа Any, x.equals(x) должно возвращать true.Он является симметричным: для любых экземпляров x и y типа Any, x.equals(y) должно возвращать true тогда и только тогда, когда y.equals(x) возвращает true.Он является транзитивным: для любых экземпляров x, y, и z типа Any если x.equals(y) возвращает true и y.equals(z) возвращает true, то x.equals(z) должно возвращать true.

Если вы переопределяете этот метод, вы должны убедиться, что ваша реализация остается отношением эквивалентности. Кроме того, при переопределении этого метода обычно необходимо переопределить hashCode, чтобы гарантировать, что объекты, которые являются "равными" (o1.equals(o2) возвращает true), имеют одинаковые хэш-коды (scala.Int). (o1.hashCode.equals(o2.hashCode)).

возвращает

true если текущий объект эквивалентен аргументу; false в противном случае.

Классы-определения
Any

def formatted(fmtstr: String): String

Возвращает строку, отформатированную в соответствии с заданной строкой format. Формат строк такой же, как в String.format (@see java.lang.String.format).

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

def hashCode(): Int

Вычисляет значение хэш-кода для объекта.

По умолчанию алгоритм хэширования зависит от платформы.

Обратите внимание, что для двух объектов допускается иметь одинаковые хэш-коды (o1.hashCode.equals(o2.hashCode)), но при этом не быть равными (o1.equals(o2) возвращает false). Вырожденная реализация может всегда возвращать 0. Однако, требуется, чтобы если два объекта равны (o1.equals(o2) возвращает true ), у них должны быть идентичные хэш-коды (o1.hashCode.equals(o2.hashCode)). Поэтому, при переопределении этого метода, необходимо убедиться, что поведение согласуется с методом equals .

возвращает

значение хэш-кода для этого объекта.

Классы-определения
Any

final def isInstanceOf[T0]: Boolean

Проверяет, является ли динамический тип получаемого объекта T0.

Обратите внимание, что результат проверки зависит от стирания типов в Scala. Поэтому выражение 1.isInstanceOf[String] вернёт false, а выражение List(1).isInstanceOf[List[String]] вернёт true. В последнем примере, из-за стирания типа аргумента во время компиляции невозможно проверить, относятся ли элементы списка к указанному типу.

возвращает

true если получаемый объект является экземпляром стираемого типа T0; false в противном случае.

Классы-определения
Any

def toString(): String

Возвращает строковое представление объекта.

По умолчанию представление зависит от платформы.

возвращает

строковое представление объекта.

Классы-определения
Any

© 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/Singleton.html

Spec-Zone.ru

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