Spec-Zone.ru › Scala 3.1

Класс scala.AnyVal

абстрактный открытый класс AnyVal

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.

Супертипы
траит Matchable
класс Any
Известные подтипы
145 типов
класс Addr
класс NameRef
класс UnapplySeqWrapper[T]
класс Boolean
класс Byte
класс Char
класс Double
класс Float
класс UnliftOps[A, B]
класс Int
класс Long
класс ElementWiseExtractor[A, B]
класс ArrowAssoc[A]
класс Ensuring[A]
класс StringFormat[A]
класс any2stringadd[A]
класс Short
класс Unit
класс ValueOf[T]
класс ArrayOps[A]
класс IterableOnceExtensionMethods[A]
класс SizeCompareOps
класс SearchImpl[Repr, A]
класс UnapplySeqWrapper[A]
класс Shape
класс StringOps
класс Deferrer[A]
класс Partial[T, U]
класс Deferrer[A]
класс UnwrapOp
класс DoubleMult
класс DurationDouble
класс DurationInt
класс DurationLong
класс IntMult
класс LongMult
класс JavaDurationOps
класс ScalaDurationOps
класс RichBiConsumerAsFunction2[T, U]
класс RichBiFunctionAsFunction2[T, U, R]
класс RichBiPredicateAsFunction2[T, U]
класс RichBinaryOperatorAsFunction2[T]
класс RichBooleanSupplierAsFunction0
класс RichConsumerAsFunction1[T]
класс RichDoubleBinaryOperatorAsFunction2
класс RichDoubleConsumerAsFunction1
класс RichDoubleFunctionAsFunction1[R]
класс RichDoublePredicateAsFunction1
класс RichDoubleSupplierAsFunction0
класс RichDoubleToIntFunctionAsFunction1
класс RichDoubleToLongFunctionAsFunction1
класс RichDoubleUnaryOperatorAsFunction1
класс RichFunction0AsBooleanSupplier
класс RichFunction0AsDoubleSupplier
класс RichFunction0AsIntSupplier
класс RichFunction0AsLongSupplier
класс RichFunction0AsSupplier[T]
класс RichFunction1AsConsumer[T]
класс RichFunction1AsDoubleConsumer
класс RichFunction1AsDoubleFunction[R]
класс RichFunction1AsDoublePredicate
класс RichFunction1AsDoubleToIntFunction
класс RichFunction1AsDoubleToLongFunction
класс RichFunction1AsDoubleUnaryOperator
класс RichFunction1AsFunction[T, R]
класс RichFunction1AsIntConsumer
класс RichFunction1AsIntFunction[R]
класс RichFunction1AsIntPredicate
класс RichFunction1AsIntToDoubleFunction
класс RichFunction1AsIntToLongFunction
класс RichFunction1AsIntUnaryOperator
класс RichFunction1AsLongConsumer
класс RichFunction1AsLongFunction[R]
класс RichFunction1AsLongPredicate
класс RichFunction1AsLongToDoubleFunction
класс RichFunction1AsLongToIntFunction
класс RichFunction1AsLongUnaryOperator
класс RichFunction1AsPredicate[T]
класс RichFunction1AsToDoubleFunction[T]
класс RichFunction1AsToIntFunction[T]
класс RichFunction1AsToLongFunction[T]
класс RichFunction1AsUnaryOperator[T]
класс RichFunction2AsBiConsumer[T, U]
класс RichFunction2AsBiFunction[T, U, R]
класс RichFunction2AsBiPredicate[T, U]
класс RichFunction2AsBinaryOperator[T]
класс RichFunction2AsDoubleBinaryOperator
класс RichFunction2AsIntBinaryOperator
класс RichFunction2AsLongBinaryOperator
класс RichFunction2AsObjDoubleConsumer[T]
класс RichFunction2AsObjIntConsumer[T]
класс RichFunction2AsObjLongConsumer[T]
класс RichFunction2AsToDoubleBiFunction[T, U]
класс RichFunction2AsToIntBiFunction[T, U]
класс RichFunction2AsToLongBiFunction[T, U]
класс RichFunctionAsFunction1[T, R]
класс RichIntBinaryOperatorAsFunction2
класс RichIntConsumerAsFunction1
класс RichIntFunctionAsFunction1[R]
класс RichIntPredicateAsFunction1
класс RichIntSupplierAsFunction0
class RichIntToDoubleFunctionAsFunction1
class RichIntToLongFunctionAsFunction1
class RichIntUnaryOperatorAsFunction1
class RichLongBinaryOperatorAsFunction2
class RichLongConsumerAsFunction1
class RichLongFunctionAsFunction1[R]
class RichLongPredicateAsFunction1
class RichLongSupplierAsFunction0
class RichLongToDoubleFunctionAsFunction1
class RichLongToIntFunctionAsFunction1
class RichLongUnaryOperatorAsFunction1
class RichObjDoubleConsumerAsFunction2[T]
class RichObjIntConsumerAsFunction2[T]
class RichObjLongConsumerAsFunction2[T]
class RichPredicateAsFunction1[T]
class RichSupplierAsFunction0[T]
class RichToDoubleBiFunctionAsFunction2[T, U]
class RichToDoubleFunctionAsFunction1[T]
class RichToIntBiFunctionAsFunction2[T, U]
class RichToIntFunctionAsFunction1[T]
class RichToLongBiFunctionAsFunction2[T, U]
class RichToLongFunctionAsFunction1[T]
class RichUnaryOperatorAsFunction1[T]
class CompletionStageOps[T]
class FutureOps[T]
class RichOption[A]
class RichOptional[A]
class RichOptionalDouble
class RichOptionalInt
class RichOptionalLong
class RichBoolean
class RichByte
class RichChar
class RichDouble
class RichFloat
class RichInt
class RichLong
class RichShort
class Tuple2Zipped[El1, It1, El2, It2]
class Ops[T1, T2]
class Tuple3Zipped[El1, It1, El2, It2, El3, It3]
class Ops[T1, T2, T3]
class ChainingOps[A]
class MergeableEither[A]

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

Spec-Zone.ru

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