Spec-Zone.ru › Scala 2.12 Library

Класс scala.AnyVal

абстрактный класс AnyVal extends Any

AnyVal является корневым классом всех типов значений, которые описывают значения, не реализованные как объекты в базовой системе. Типы значений определены в спецификации языка Scala, раздел 12.2.

Стандартная реализация включает девять AnyVal подтипов:

scala.Double, scala.Float, scala.Long, scala.Int, scala.Char, scala.Short и scala.Byte — это числовые типы значений.

scala.Unit и scala.Boolean — это нечисловые типы значений.

Другие группировки:

  • Типы поддиапазона — scala.Byte, scala.Short и scala.Char.
  • Целочисленные типы включают типы поддиапазона, а также scala.Int и scala.Long.
  • Типы с плавающей точкой — scala.Float и scala.Double.

До Scala 2.10, AnyVal был запечатанным трайтом. Однако начиная со Scala 2.10, можно определить подкласс AnyVal, называемый пользовательским типом значения, который обрабатывается компилятором особым образом. Правильно определенные пользовательские типы значений обеспечивают повышение производительности для пользовательских типов, избегая выделения памяти для объекта во время выполнения и заменяя вызовы виртуальных методов вызовами статических методов.

Пользовательские типы значений, которые избегают выделения памяти…

  • должны иметь один val параметр, который является базовым представлением во время выполнения.
  • могут определять defы, но не valы, varы или вложенные traitsы, classы или objectы.
  • обычно не наследуют ни один другой трайт, кроме AnyVal.
  • не могут использоваться в проверках типов или сопоставлении с образцом.
  • не могут переопределять методы equals или hashCode.

Минимальный пример:

class Wrapper(val underlying: Int) extends AnyVal {
  def foo: Wrapper = new Wrapper(underlying * 19)
}

Важно отметить, что пользовательские типы значений ограничены, и в некоторых случаях все еще могут выделять экземпляр класса типа значения во время выполнения. Эти ограничения и обстоятельства подробно описаны в Value Classes and Universal Traits.

Источник
AnyVal.scala
Линейные надтипы
Известные подклассы

Конструкторы экземпляров

новый AnyVal()

Члены значений

final def !=(arg0: Any): Boolean

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

возвращает

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

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

final def ##(): Int

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

возвращает

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

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

def +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из AnyVal в any2stringadd[AnyVal] при помощи метода any2stringadd в scala.Predef.
Классы определений
any2stringadd

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

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

final def ==(arg0: Any): Boolean

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

возвращает

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

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

final def asInstanceOf[T0]: T0

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

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

возвращает

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

Классы определений
Any
Исключения

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

def ensuring(cond: (AnyVal) ⇒ Boolean, msg: ⇒ Any): AnyVal

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

def ensuring(cond: (AnyVal) ⇒ Boolean): AnyVal

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

def ensuring(cond: Boolean, msg: ⇒ Any): AnyVal

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

def ensuring(cond: Boolean): AnyVal

Неявный
Этот член добавлен неявным преобразованием из AnyVal в Ensuring[AnyVal] при помощи метода 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)).

returns

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

Definition Classes
Any

def formatted(fmtstr: String): String

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

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

def getClass(): Class[_ <: AnyVal]

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

returns

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

Definition Classes
AnyVal → Any

def hashCode(): Int

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

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

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

returns

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

Definition Classes
Any

final def isInstanceOf[T0]: Boolean

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

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

returns

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

Definition Classes
Any

def toString(): String

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

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

returns

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

Definition Classes
Any

def →[B](y: B): (AnyVal, B)

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

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/AnyVal.html

Spec-Zone.ru

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