Spec-Zone.ru › Scala 2.12 Library

Пакет scala

пакет scala

Основные типы Scala. Они всегда доступны без явного импорта.

Источник
package.scala
Линейные надтипы

Члены типов

тип ::[A] = scala.collection.immutable.::[A]

тип AbstractMethodError = java.lang.AbstractMethodError

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

Класс Any является корнем иерархии классов Scala. Каждый класс в среде выполнения Scala наследуется непосредственно или косвенно от этого класса.

Начиная со Scala 2.10, можно напрямую расширить Any с помощью универсальных трейтов. Универсальный трейт — это трейт, который расширяет Any, имеет только def в качестве членов и не выполняет инициализацию.

Основной случай использования универсальных трейтов — это разрешить базовое наследование методов для классов значений. Например,

trait Printable extends Any {
  def print(): Unit = println(this)
}
class Wrapper(val underlying: Int) extends AnyVal with Printable

val w = new Wrapper(3)
w.print()

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

абстрактный класс 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)
}

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

трейт App extends DelayedInit

Трейт App может быть использован для быстрого превращения объектов в исполняемые программы. Вот пример:

object Main extends App {
  Console.println("Hello World: " + (args mkString ", "))
}

Здесь объект Main наследует метод main от App.

args возвращает текущие аргументы командной строки в виде массива.

Примечания

Следует отметить, что этот трейт реализован с использованием функциональности DelayedInit, что означает, что поля объекта не будут инициализированы до выполнения метода main.

Также следует отметить, что метод main не должен переопределяться: всё тело класса становится «методом main».

В будущих версиях этот трейт не будет больше расширять DelayedInit.

Since

2.1

final класс Array[T] extends java.io.Serializable with java.lang.Cloneable

Массивы — изменяемые индексированные коллекции значений. Array[T] — представление Scala для T[] Java.

val numbers = Array(1, 2, 3, 4)
val first = numbers(0) // read the first element
numbers(3) = 100 // replace the 4th array element with 100
val biggerNumbers = numbers.map(_ * 2) // multiply all numbers by two

Массивы используют два распространённых элемента синтаксического сахара Scala, показанных на строках 2 и 3 приведённого выше кода. Строка 2 преобразуется в вызов apply(Int), а строка 3 — в вызов update(Int, T).

В scala.Predef существуют два неявных преобразования, которые часто применяются к массивам: преобразование в scala.collection.mutable.ArrayOps (показано на строке 4 примера выше) и преобразование в scala.collection.mutable.WrappedArray (подтип scala.collection.Seq). Оба типа предоставляют множество стандартных операций, присутствующих в API коллекций Scala. Преобразование в ArrayOps временное, так как все операции, определённые на ArrayOps, возвращают Array, в то время как преобразование в WrappedArray постоянное, так как все операции возвращают WrappedArray.

Преобразование в ArrayOps имеет приоритет над преобразованием в WrappedArray. Например, рассмотрите следующий код:

val arr = Array(1, 2, 3)
val arrReversed = arr.reverse
val seqReversed : Seq[Int] = arr.reverse

Значение arrReversed будет иметь тип Array[Int], при этом произойдёт неявное преобразование в ArrayOps для выполнения операции reverse. С другой стороны, значение seqReversed будет вычислено путём преобразования в WrappedArray сначала и вызова варианта reverse, который возвращает другой WrappedArray.

Since

1.0

См. также

Спецификация языка Scala, для углублённой информации о преобразованиях, которые компилятор Scala выполняет для массивов (разделы 6.6 и 6.15 соответственно).

"Scala 2.8 Arrays" — документ Scala Improvement Document, описывающий массивы с момента Scala 2.8.

"API коллекций Scala 2.8" раздел о Array Мартина Одерски для получения дополнительной информации.

тип ArrayIndexOutOfBoundsException = java.lang.ArrayIndexOutOfBoundsException

тип BigDecimal = scala.math.BigDecimal

тип BigInt = scala.math.BigInt

абстрактный финальный класс Boolean extends AnyVal

Boolean (эквивалентен примитивному типу Java boolean) является подтипом scala.AnyVal. Экземпляры Boolean не представлены объектом в базовой системе выполнения.

Существует неявное преобразование из scala.Boolean => scala.runtime.RichBoolean, которое предоставляет полезные не-примитивные операции.

тип BufferedIterator[+A] = scala.collection.BufferedIterator[A]

абстрактный финальный класс Byte extends AnyVal

Byte, 8-битовое знаковое целое число (эквивалентно примитивному типу Java byte) является подтипом scala.AnyVal. Экземпляры Byte не представлены объектом в базовой системе выполнения.

Существует неявное преобразование из scala.Byte => scala.runtime.RichByte, которое предоставляет полезные не-примитивные операции.

абстрактный финальный класс Char extends AnyVal

Char, 16-битовое беззнаковое целое число (эквивалентно примитивному типу Java char) является подтипом scala.AnyVal. Экземпляры Char не представлены объектом в базовой системе выполнения.

Существует неявное преобразование из scala.Char => scala.runtime.RichChar, которое предоставляет полезные не-примитивные операции.

тип ClassCastException = java.lang.ClassCastException

трайт Cloneable extends java.lang.Cloneable

абстрактный финальный класс Double extends AnyVal

Double, 64-битовое число с плавающей точкой IEEE-754 (эквивалентно примитивному типу Java double) является подтипом scala.AnyVal. Экземпляры Double не представлены объектом в базовой системе выполнения.

Существует неявное преобразование из scala.Double => scala.runtime.RichDouble, которое предоставляет полезные не-примитивные операции.

трайт Dynamic extends Any

Маркерный трайт, который позволяет динамические вызовы. Экземпляры x этого трайта позволяют вызовы методов x.meth(args) для произвольных имён методов meth и списков аргументов args, а также доступ к полям x.field для произвольных имён полей field.

Если вызов не поддерживается напрямую x (т.е. если проверка типа не проходит), он переписывается в соответствии со следующими правилами:

foo.method("blah")      ~~> foo.applyDynamic("method")("blah")
foo.method(x = "blah")  ~~> foo.applyDynamicNamed("method")(("x", "blah"))
foo.method(x = 1, 2)    ~~> foo.applyDynamicNamed("method")(("x", 1), ("", 2))
foo.field           ~~> foo.selectDynamic("field")
foo.varia = 10      ~~> foo.updateDynamic("varia")(10)
foo.arr(10) = 13    ~~> foo.selectDynamic("arr").update(10, 13)
foo.arr(10)         ~~> foo.applyDynamic("arr")(10)

Начиная с Scala 2.10, определение прямых или косвенных подклассов этого трайта возможно только при включенной языковой возможности dynamics.

тип Either[+A, +B] = scala.util.Either[A, B]

абстрактный класс Enumeration extends Serializable

Определяет конечный набор значений, специфичный для перечисления. Обычно эти значения перечисляют все возможные формы чего-либо и предоставляют легкую альтернативу классам case.

Каждый вызов метода Value добавляет новое уникальное значение в перечисление. Для доступа эти значения обычно определяются как val члены вычисления.

Все значения в перечислении имеют общий, уникальный тип, определенный как Value тип-член перечисления (Value выбранный по стабильному идентификатору пути экземпляра перечисления).

Значения НЕ ДОЛЖНЫ добавляться в перечисление после его создания; это делает перечисление небезопасным для потоков. Если значения добавляются в перечисление из нескольких потоков (несинхронизированным образом) после создания, поведение перечисления не определено.

Аннотации
@SerialVersionUID()
Примеры:
    // Define a new enumeration with a type alias and work with the full set of enumerated values
    object WeekDay extends Enumeration {
      type WeekDay = Value
      val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
    }
    import WeekDay._
    
    def isWorkingDay(d: WeekDay) = ! (d == Sat || d == Sun)
    
    WeekDay.values filter isWorkingDay foreach println
    // output:
    // Mon
    // Tue
    // Wed
    // Thu
    // Fri
    ,
    // Example of adding attributes to an enumeration by extending the Enumeration.Val class
    object Planet extends Enumeration {
      protected case class Val(mass: Double, radius: Double) extends super.Val {
        def surfaceGravity: Double = Planet.G * mass / (radius * radius)
        def surfaceWeight(otherMass: Double): Double = otherMass * surfaceGravity
      }
      implicit def valueToPlanetVal(x: Value): Val = x.asInstanceOf[Val]
    
      val G: Double = 6.67300E-11
      val Mercury = Val(3.303e+23, 2.4397e6)
      val Venus   = Val(4.869e+24, 6.0518e6)
      val Earth   = Val(5.976e+24, 6.37814e6)
      val Mars    = Val(6.421e+23, 3.3972e6)
      val Jupiter = Val(1.9e+27, 7.1492e7)
      val Saturn  = Val(5.688e+26, 6.0268e7)
      val Uranus  = Val(8.686e+25, 2.5559e7)
      val Neptune = Val(1.024e+26, 2.4746e7)
    }
    
    println(Planet.values.filter(_.radius > 7.0e6))
    // output:
    // Planet.ValueSet(Jupiter, Saturn, Uranus, Neptune)

трайт Equals extends Any

Интерфейс, содержащий операции для равенства. Единственный метод, отсутствующий в классе AnyRef, это canEqual.

тип Equiv[T] = scala.math.Equiv[T]

тип Error = java.lang.Error

тип Exception = java.lang.Exception

класс FallbackArrayBuilding extends AnyRef

Содержит резервный билдер для массивов, когда тип элемента не имеет тега класса. В этом случае строится обобщенный массив.

абстрактный финальный класс Float extends AnyVal

Float, 32-битовое число с плавающей точкой IEEE-754 (эквивалентно примитивному типу Java float) является подтипом scala.AnyVal. Экземпляры Float не представлены объектом в базовой системе выполнения.

Существует неявное преобразование из scala.Float => scala.runtime.RichFloat, которое предоставляет полезные не-примитивные операции.

тип Fractional[T] = scala.math.Fractional[T]

тракт Function0[+R] extends AnyRef

Функция без параметров.

В следующем примере, определение javaVersion является сокращением для определения анонимного класса anonfun0:

 object Main extends App {
   val javaVersion = () => sys.props("java.version")

   val anonfun0 = new Function0[String] {
     def apply(): String = sys.props("java.version")
   }
   assert(javaVersion() == anonfun0())
}

тракт Function1[-T1, +R] extends AnyRef

Функция с 1 параметром.

В следующем примере, определение succ является сокращением для определения анонимного класса anonfun1:

 object Main extends App {
   val succ = (x: Int) => x + 1
   val anonfun1 = new Function1[Int, Int] {
     def apply(x: Int): Int = x + 1
   }
   assert(succ(0) == anonfun1(0))
}

Обратите внимание на разницу между Function1 и scala.PartialFunction, последняя может указывать входные данные, с которыми она не будет работать.

Аннотации
@implicitNotFound( msg = ... )

тракт Function10[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, +R] extends AnyRef

тракт Function11[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, +R] extends AnyRef

тракт Function12[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, +R] extends AnyRef

тракт Function13[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, +R] extends AnyRef

тракт Function14[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, +R] extends AnyRef

тракт Function15[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, +R] extends AnyRef

тракт Function16[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, +R] extends AnyRef

тракт Function17[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, +R] extends AnyRef

тракт Function18[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, +R] extends AnyRef

тракт Function19[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, +R] extends AnyRef

тракт Function2[-T1, -T2, +R] extends AnyRef

Функция с 2 параметрами.

В следующем примере, определение max является сокращением для определения анонимного класса anonfun2:

 object Main extends App {
   val max = (x: Int, y: Int) => if (x < y) y else x

   val anonfun2 = new Function2[Int, Int, Int] {
     def apply(x: Int, y: Int): Int = if (x < y) y else x
   }
   assert(max(0, 1) == anonfun2(0, 1))
}

trait Function20[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, -T20, +R] extends AnyRef

trait Function21[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, -T20, -T21, +R] extends AnyRef

trait Function22[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, -T20, -T21, -T22, +R] extends AnyRef

trait Function3[-T1, -T2, -T3, +R] extends AnyRef

trait Function4[-T1, -T2, -T3, -T4, +R] extends AnyRef

trait Function5[-T1, -T2, -T3, -T4, -T5, +R] extends AnyRef

trait Function6[-T1, -T2, -T3, -T4, -T5, -T6, +R] extends AnyRef

trait Function7[-T1, -T2, -T3, -T4, -T5, -T6, -T7, +R] extends AnyRef

trait Function8[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, +R] extends AnyRef

trait Function9[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, +R] extends AnyRef

type IllegalArgumentException = java.lang.IllegalArgumentException

trait Immutable extends AnyRef

Маркерный трейт для всех неизменяемых структур данных, таких как неизменяемые коллекции.

Since

2.8

type IndexOutOfBoundsException = java.lang.IndexOutOfBoundsException

type IndexedSeq[+A] = scala.collection.IndexedSeq[A]

abstract final class Int extends AnyVal

Int, 32-разрядное целое число со знаком (эквивалентно примитивному типу Java's int ) является подтипом scala.AnyVal. Экземпляры Int не представлены объектом в базовой системе выполнения.

Существует неявное преобразование от scala.Int => scala.runtime.RichInt, которое предоставляет полезные не-примитивные операции.

type Integral[T] = scala.math.Integral[T]

type InterruptedException = java.lang.InterruptedException

type Iterable[+A] = scala.collection.Iterable[A]

type Iterator[+A] = scala.collection.Iterator[A]

type Left[+A, +B] = scala.util.Left[A, B]

тип Список[+A] = scala.collection.immutable.List[A]

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

Long, 64-битное знаковое целое число (эквивалентно примитивному типу Java long) является подтипом scala.AnyVal. Экземпляры Long не представлены объектом в базовой системе выполнения.

Существует неявное преобразование из scala.Long => scala.runtime.RichLong, которое предоставляет полезные не-примитивные операции.

final класс MatchError extends RuntimeException

Этот класс реализует ошибки, которые выбрасываются всякий раз, когда объект не соответствует ни одному шаблону выражения сопоставления с образцом.

Since

2.0

трайт Mutable extends AnyRef

Разметка тракта для изменяемых структур данных, таких как изменяемые коллекции

Since

2.8

тип NoSuchElementException = java.util.NoSuchElementException

final класс NotImplementedError extends Error

Выброс этого исключения может быть временной заменой для тела метода, которое ещё не реализовано. Например, исключение выбрасывается Predef.???.

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

Nothing - вместе с scala.Null - находится в нижней части иерархии типов Scala.

Nothing является подтипом любого другого типа (включая scala.Null); экземпляров этого типа не существует. Несмотря на то, что тип Nothing необитаем, он тем не менее полезен в нескольких отношениях. Например, библиотека Scala определяет значение scala.collection.immutable.Nil типа List[Nothing]. Поскольку списки ковариантны в Scala, это делает scala.collection.immutable.Nil экземпляром List[T], для любого элемента типа T.

Еще одно использование Nothing - это возвращаемый тип для методов, которые никогда не возвращаются нормально. Одним из примеров является метод error в scala.sys, который всегда выбрасывает исключение.

абстрактный final класс Null extends AnyRef

Null - вместе с scala.Nothing - находится в нижней части иерархии типов Scala.

Null - это тип литерала null. Это подтип каждого типа, кроме типов значений.

Типы значений являются подклассами AnyVal, которые включают примитивные типы, такие как Int, Boolean и определенные пользователем типы значений.

Поскольку Null не является подтипом типов значений, null не является членом такого типа. Например, нельзя присвоить null переменной типа scala.Int.

тип NullPointerException = java.lang.NullPointerException

тип NumberFormatException = java.lang.NumberFormatException

тип Числовой[T] = scala.math.Numeric[T]

запечатанный абстрактный класс Вариант[+A] extends Product with Serializable

Представляет необязательные значения. Экземпляры Option являются либо экземпляром scala.Some, либо объектом None.

Наиболее распространенный способ использования экземпляра scala.Option — рассматривать его как коллекцию или монаду и использовать map, flatMap, filter, или foreach:

val name: Option[String] = request getParameter "name"
val upper = name map { _.trim } filter { _.length != 0 } map { _.toUpperCase }
println(upper getOrElse "")

Обратите внимание, что это эквивалентно

val upper = for {
  name <- request getParameter "name"
  trimmed <- Some(name.trim)
  upper <- Some(trimmed.toUpperCase) if trimmed.length != 0
} yield upper
println(upper getOrElse "")

Из-за того, как работает понимание цикла for, если None возвращается из request.getParameter, всё выражение результатом будет None

Это позволяет создавать сложные цепочки значений scala.Option без необходимости проверки наличия значения.

Ниже приведены полезные методы, которые существуют как для scala.Some, так и для None.

    isDefined — True, если не пусто isEmpty — True, если пусто nonEmpty — True, если не пусто orElse — Оценивает и возвращает альтернативное необязательное значение, если пусто getOrElse — Оценивает и возвращает альтернативное значение, если пусто get — Возвращает значение, выбрасывает исключение, если пусто fold — Применяет функцию к необязательному значению, возвращает значение по умолчанию, если пусто map — Применяет функцию к необязательному значению flatMap — То же, что и map, но функция должна возвращать необязательное значение foreach — Применяет процедуру к значению опциона collect — Применяет частичное сопоставление шаблонов к необязательному значению filter — Необязательное значение удовлетворяет предикату filterNot — Необязательное значение не удовлетворяет предикату exists — Применяет предикат к необязательному значению или возвращает false, если пусто forall — Применяет предикат к необязательному значению или возвращает true, если пусто contains — Проверяет, равно ли значение необязательному значению, или возвращает false, если пусто toList — Единичный список необязательного значения, в противном случае — пустой список

Менее распространенный способ использования значений scala.Option — с помощью сопоставления шаблонов:

val nameMaybe = request getParameter "name"
nameMaybe match {
  case Some(name) =>
    println(name.trim.toUppercase)
  case None =>
    println("No name value")
}

Взаимодействие с кодом, который время от времени может возвращать null, можно безопасно обернуть в scala.Option, чтобы получить None, а в противном случае — scala.Some.

val abc = new java.util.HashMap[Int, String]
abc.put(1, "A")
bMaybe = Option(abc.get(2))
bMaybe match {
  case Some(b) =>
    println(s"Found $b")
  case None =>
    println("Not found")
}
Аннотации
@SerialVersionUID()
С

1.1

Примечание

Многие методы здесь дублируются методами иерархии Traversable, но это сделано намеренно: неявное преобразование часто приводит к Iterable в ситуациях, где можно было бы сохранить Option.

тип Ordered[T] = scala.math.Ordered[T]

тип Ordering[T] = scala.math.Ordering[T]

тракт PartialFunction[-A, +B] extends (A) ⇒ B

Частичная функция типа PartialFunction[A, B] — это унарная функция, область определения которой не обязательно включает все значения типа A. Функция isDefinedAt позволяет динамически проверить, находится ли значение в области определения функции.

Даже если isDefinedAt возвращает true для a: A, вызов apply(a) всё ещё может выбросить исключение, поэтому следующий код является корректным:

val f: PartialFunction[Int, Any] = { case _ => 1/0 }

Ответственность за вызов isDefinedAt перед вызовом apply лежит на вызывающей стороне, так как если isDefinedAt ложно, не гарантируется, что apply выбросит исключение, чтобы указать ошибку. Если исключение не выброшено, результат оценки может быть произвольным.

Основное различие между PartialFunction и scala.Function1 заключается в том, что пользователь PartialFunction может выбрать другой способ обработки входных данных, которые объявлены вне области определения. Например:

val sample = 1 to 10
val isEven: PartialFunction[Int, String] = {
  case x if x % 2 == 0 => x+" is even"
}

// the method collect can use isDefinedAt to select which members to collect
val evenNumbers = sample collect isEven

val isOdd: PartialFunction[Int, String] = {
  case x if x % 2 == 1 => x+" is odd"
}

// the method orElse allows chaining another partial function to handle
// input outside the declared domain
val numbers = sample map (isEven orElse isOdd)
С

1.0

тип PartialOrdering[T] = scala.math.PartialOrdering[T]

тип PartiallyOrdered[T] = scala.math.PartiallyOrdered[T]

тракт Product extends Equals

Базовый тракт для всех продуктов, которые в стандартной библиотеке включают по крайней мере scala.Product1 через scala.Product22 и, следовательно, также их подклассы scala.Tuple1 через scala.Tuple22. Кроме того, все case-классы реализуют Product с синтетически сгенерированными методами.

С

2.3

тракт Product1[+T1] extends Product

Product1 — это декартово произведение из 1 компонента.

С

2.3

тракт Product10[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10] extends Product

Product10 — это декартово произведение из 10 компонентов.

С

2.3

тракт Product11[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11] extends Product

Product11 — это декартово произведение из 11 компонентов.

С

2.3

trait Product12[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12] extends Product

Product12 представляет собой декартово произведение 12 компонентов.

Since

2.3

trait Product13[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13] extends Product

Product13 представляет собой декартово произведение 13 компонентов.

Since

2.3

trait Product14[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14] extends Product

Product14 представляет собой декартово произведение 14 компонентов.

Since

2.3

trait Product15[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15] extends Product

Product15 представляет собой декартово произведение 15 компонентов.

Since

2.3

trait Product16[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16] extends Product

Product16 представляет собой декартово произведение 16 компонентов.

Since

2.3

trait Product17[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17] extends Product

Product17 представляет собой декартово произведение 17 компонентов.

Since

2.3

trait Product18[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18] extends Product

Product18 представляет собой декартово произведение 18 компонентов.

Since

2.3

trait Product19[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19] extends Product

Product19 представляет собой декартово произведение 19 компонентов.

Since

2.3

trait Product2[+T1, +T2] extends Product

Product2 представляет собой декартово произведение 2 компонентов.

Since

2.3

trait Product20[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20] extends Product

Product20 представляет собой декартово произведение 20 компонентов.

Since

2.3

trait Product21[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21] extends Product

Product21 представляет собой декартово произведение 21 компонента.

Since

2.3

trait Product22[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21, +T22] extends Product

Product22 — это декартово произведение 22 компонентов.

Since

2.3

trait Product3[+T1, +T2, +T3] extends Product

Product3 — это декартово произведение 3 компонентов.

Since

2.3

trait Product4[+T1, +T2, +T3, +T4] extends Product

Product4 — это декартово произведение 4 компонентов.

Since

2.3

trait Product5[+T1, +T2, +T3, +T4, +T5] extends Product

Product5 — это декартово произведение 5 компонентов.

Since

2.3

trait Product6[+T1, +T2, +T3, +T4, +T5, +T6] extends Product

Product6 — это декартово произведение 6 компонентов.

Since

2.3

trait Product7[+T1, +T2, +T3, +T4, +T5, +T6, +T7] extends Product

Product7 — это декартово произведение 7 компонентов.

Since

2.3

trait Product8[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8] extends Product

Product8 — это декартово произведение 8 компонентов.

Since

2.3

trait Product9[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9] extends Product

Product9 — это декартово произведение 9 компонентов.

Since

2.3

trait Proxy extends Any

Этот класс реализует простой прокси, который перенаправляет все вызовы к открытым, не финальным методам, определенным в классе Any, другому объекту self.

def hashCode(): Int
def equals(other: Any): Boolean
def toString(): String

Примечание: перенаправление методов таким способом, скорее всего, создаст асимметричный метод equals, что, как правило, не рекомендуется.

Since

1.0

type Range = scala.collection.immutable.Range

type Right[+A, +B] = scala.util.Right[A, B]

type RuntimeException = java.lang.RuntimeException

case class ScalaReflectionException(msg: String) extends Exception with Product with Serializable

type Seq[+A] = scala.collection.Seq[A]

class SerialVersionUID extends Annotation with ClassfileAnnotation

trait Serializable extends java.io.Serializable

abstract final class Short extends AnyVal

Short, 16-битное целое число со знаком (эквивалентно примитивному типу short в Java) является подтипом scala.AnyVal. Экземпляры Short не представлены объектом в базовой runtime-системе.

Существует неявное преобразование из scala.Short => scala.runtime.RichShort, которое предоставляет полезные не примитивные операции.

final case class Some[+A](value: A) extends Option[A] with Product with Serializable

Класс Some[A] представляет существующие значения типа A.

Аннотации
@SerialVersionUID()
С тех пор

1.0

trait Specializable extends AnyRef

Общий супертип для компаньонов специализируемых типов. Не должен расширяться в пользовательском коде.

type Stream[+A] = scala.collection.immutable.Stream[A]

type StringBuilder = scala.collection.mutable.StringBuilder

case class StringContext(parts: String*) extends Product with Serializable

Этот класс предоставляет базовый механизм для интерполяции строк. Интерполяция строк позволяет пользователям встраивать ссылки на переменные непосредственно в *обработанные* строковые литералы. Вот пример:

val name = "James"
println(s"Hello, $name")  // Hello, James

Любой обработанный строковый литерал переписывается как экземпляр и вызов метода этого класса. Например:

s"Hello, $name"

переписывается так:

StringContext("Hello, ", "").s(name)

По умолчанию этот класс предоставляет методы raw, s и f в качестве доступных интерполяторов.

Чтобы предоставить свой собственный интерполятор строк, создайте неявный класс, который добавляет метод к StringContext. Вот пример:

implicit class JsonHelper(private val sc: StringContext) extends AnyVal {
  def json(args: Any*): JSONObject = ...
}
val x: JSONObject = json"{ a: $a }"

Здесь класс расширения JsonHelper неявным образом добавляет метод json к StringContext, который можно использовать для json строковых литералов.

parts

Части, из которых состоит интерполированная строка, без выражений, которые вставляются интерполяцией.

С тех пор

2.10.0

type StringIndexOutOfBoundsException = java.lang.StringIndexOutOfBoundsException

final class Symbol extends Serializable

Этот класс предоставляет простой способ получения уникальных объектов для равных строк. Поскольку символы интернированы, их можно сравнивать с помощью равенства ссылок. Экземпляры Symbol можно легко создать с помощью встроенного механизма цитирования Scala.

Например, Scala-термин 'mysym вызовет конструктор класса Symbol следующим образом: Symbol("mysym").

С тех пор

1.7

type Throwable = java.lang.Throwable

type Traversable[+A] = scala.collection.Traversable[A]

type TraversableOnce[+A] = scala.collection.TraversableOnce[A]

final case class Tuple1[+T1](_1: T1) extends Product1[T1] with Product with Serializable

Кортеж из 1 элемента; каноническое представление scala.Product1.

_1

Элемент 1 этого Tuple1

final case class Tuple10[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10) extends Product10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] with Product with Serializable

Кортеж из 10 элементов; каноническое представление scala.Product10.

_1

Элемент 1 этого Tuple10

_2

Элемент 2 этого Tuple10

_3

Элемент 3 этого Tuple10

_4

Элемент 4 этого Tuple10

_5

Элемент 5 этого Tuple10

_6

Элемент 6 этого Tuple10

_7

Элемент 7 этого Tuple10

_8

Элемент 8 этого Tuple10

_9

Элемент 9 этого Tuple10

_10

Элемент 10 этого Tuple10

final кортеж Tuple11[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11) extends Product11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] with Product with Serializable

Кортеж из 11 элементов; каноническое представление scala.Product11.

_1

Элемент 1 этого Tuple11

_2

Элемент 2 этого Tuple11

_3

Элемент 3 этого Tuple11

_4

Элемент 4 этого Tuple11

_5

Элемент 5 этого Tuple11

_6

Элемент 6 этого Tuple11

_7

Элемент 7 этого Tuple11

_8

Элемент 8 этого Tuple11

_9

Элемент 9 этого Tuple11

_10

Элемент 10 этого Tuple11

_11

Элемент 11 этого Tuple11

final кортеж Tuple12[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12) extends Product12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] with Product with Serializable

final кортеж Tuple13[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13) extends Product13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] with Product with Serializable

final кортеж Tuple14[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14) extends Product14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] with Product with Serializable

Кортеж из 14 элементов; каноническое представление scala.Product14.

_1

Элемент 1 этого кортежа Tuple14

_2

Элемент 2 этого кортежа Tuple14

_3

Элемент 3 этого кортежа Tuple14

_4

Элемент 4 этого кортежа Tuple14

_5

Элемент 5 этого кортежа Tuple14

_6

Элемент 6 этого кортежа Tuple14

_7

Элемент 7 этого кортежа Tuple14

_8

Элемент 8 этого кортежа Tuple14

_9

Элемент 9 этого кортежа Tuple14

_10

Элемент 10 этого кортежа Tuple14

_11

Элемент 11 этого кортежа Tuple14

_12

Элемент 12 этого кортежа Tuple14

_13

Элемент 13 этого кортежа Tuple14

_14

Элемент 14 этого кортежа Tuple14

final кортеж Tuple15[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15) extends Product15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] with Product with Serializable

Кортеж из 15 элементов; каноническое представление scala.Product15.

_1

Элемент 1 этого кортежа Tuple15

_2

Элемент 2 этого кортежа Tuple15

_3

Элемент 3 этого кортежа Tuple15

_4

Элемент 4 этого кортежа Tuple15

_5

Элемент 5 этого кортежа Tuple15

_6

Элемент 6 этого кортежа Tuple15

_7

Элемент 7 этого кортежа Tuple15

_8

Элемент 8 этого кортежа Tuple15

_9

Элемент 9 этого кортежа Tuple15

_10

Элемент 10 этого кортежа Tuple15

_11

Элемент 11 этого кортежа Tuple15

_12

Элемент 12 этого кортежа Tuple15

_13

Элемент 13 этого кортежа Tuple15

_14

Элемент 14 этого кортежа Tuple15

_15

Элемент 15 этого кортежа Tuple15

final кортеж Tuple16[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16) extends Product16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] with Product with Serializable

Кортеж из 16 элементов; каноническое представление scala.Product16.

_1

Элемент 1 этого Tuple16

_2

Элемент 2 этого Tuple16

_3

Элемент 3 этого Tuple16

_4

Элемент 4 этого Tuple16

_5

Элемент 5 этого Tuple16

_6

Элемент 6 этого Tuple16

_7

Элемент 7 этого Tuple16

_8

Элемент 8 этого Tuple16

_9

Элемент 9 этого Tuple16

_10

Элемент 10 этого Tuple16

_11

Элемент 11 этого Tuple16

_12

Элемент 12 этого Tuple16

_13

Элемент 13 этого Tuple16

_14

Элемент 14 этого Tuple16

_15

Элемент 15 этого Tuple16

_16

Элемент 16 этого Tuple16

final кортеж Tuple17[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17) extends Product17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] with Product with Serializable

Кортеж из 17 элементов; каноническое представление scala.Product17.

_1

Элемент 1 этого Tuple17

_2

Элемент 2 этого Tuple17

_3

Элемент 3 этого Tuple17

_4

Элемент 4 этого Tuple17

_5

Элемент 5 этого Tuple17

_6

Элемент 6 этого Tuple17

_7

Элемент 7 этого Tuple17

_8

Элемент 8 этого Tuple17

_9

Элемент 9 этого Tuple17

_10

Элемент 10 этого Tuple17

_11

Элемент 11 этого Tuple17

_12

Элемент 12 этого Tuple17

_13

Элемент 13 этого Tuple17

_14

Элемент 14 этого Tuple17

_15

Элемент 15 этого Tuple17

_16

Элемент 16 этого Tuple17

_17

Элемент 17 этого Tuple17

final кортеж Tuple18[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18) extends Product18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] with Product with Serializable

Кортеж из 18 элементов; каноническое представление scala.Product18.

_1

Элемент 1 этого Tuple18

_2

Элемент 2 этого Tuple18

_3

Элемент 3 этого Tuple18

_4

Элемент 4 этого Tuple18

_5

Элемент 5 этого Tuple18

_6

Элемент 6 этого Tuple18

_7

Элемент 7 этого Tuple18

_8

Элемент 8 этого Tuple18

_9

Элемент 9 этого Tuple18

_10

Элемент 10 этого Tuple18

_11

Элемент 11 этого Tuple18

_12

Элемент 12 этого Tuple18

_13

Элемент 13 этого Tuple18

_14

Элемент 14 этого Tuple18

_15

Элемент 15 этого Tuple18

_16

Элемент 16 этого Tuple18

_17

Элемент 17 этого Tuple18

_18

Элемент 18 этого Tuple18

final кортеж Tuple19[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19) extends Product19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] with Product with Serializable

Кортеж из 19 элементов; каноническое представление scala.Product19.

_1

Элемент 1 этого Tuple19

_2

Элемент 2 этого Tuple19

_3

Элемент 3 этого Tuple19

_4

Элемент 4 этого Tuple19

_5

Элемент 5 этого Tuple19

_6

Элемент 6 этого Tuple19

_7

Элемент 7 этого Tuple19

_8

Элемент 8 этого Tuple19

_9

Элемент 9 этого Tuple19

_10

Элемент 10 этого Tuple19

_11

Элемент 11 этого Tuple19

_12

Элемент 12 этого Tuple19

_13

Элемент 13 этого Tuple19

_14

Элемент 14 этого Tuple19

_15

Элемент 15 этого Tuple19

_16

Элемент 16 этого Tuple19

_17

Элемент 17 этого Tuple19

_18

Элемент 18 этого Tuple19

_19

Элемент 19 этого Tuple19

final кортеж Tuple2[+T1, +T2](_1: T1, _2: T2) extends Product2[T1, T2] with Product with Serializable

Кортеж из 2 элементов; каноническое представление scala.Product2.

_1

Элемент 1 этого Tuple2

_2

Элемент 2 этого Tuple2

final кортеж Tuple20[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20) extends Product20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] with Product with Serializable

Кортеж из 20 элементов; каноническое представление scala.Product20.

_1

Элемент 1 этого Tuple20

_2

Элемент 2 этого Tuple20

_3

Элемент 3 этого Tuple20

_4

Элемент 4 этого Tuple20

_5

Элемент 5 этого Tuple20

_6

Элемент 6 этого Tuple20

_7

Элемент 7 этого Tuple20

_8

Элемент 8 этого Tuple20

_9

Элемент 9 этого Tuple20

_10

Элемент 10 этого Tuple20

_11

Элемент 11 этого Tuple20

_12

Элемент 12 этого Tuple20

_13

Элемент 13 этого Tuple20

_14

Элемент 14 этого Tuple20

_15

Элемент 15 этого Tuple20

_16

Элемент 16 этого Tuple20

_17

Элемент 17 этого Tuple20

_18

Элемент 18 этого Tuple20

_19

Элемент 19 этого Tuple20

_20

Элемент 20 этого Tuple20

final кортеж Tuple21[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21) extends Product21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] with Product with Serializable

Кортеж из 21 элемента; каноническое представление scala.Product21.

_1

Элемент 1 этого Tuple21

_2

Элемент 2 этого Tuple21

_3

Элемент 3 этого Tuple21

_4

Элемент 4 этого Tuple21

_5

Элемент 5 этого Tuple21

_6

Элемент 6 этого Tuple21

_7

Элемент 7 этого Tuple21

_8

Элемент 8 этого Tuple21

_9

Элемент 9 этого Tuple21

_10

Элемент 10 этого Tuple21

_11

Элемент 11 этого Tuple21

_12

Элемент 12 этого Tuple21

_13

Элемент 13 этого Tuple21

_14

Элемент 14 этого Tuple21

_15

Элемент 15 этого Tuple21

_16

Элемент 16 этого Tuple21

_17

Элемент 17 этого Tuple21

_18

Элемент 18 этого Tuple21

_19

Элемент 19 этого Tuple21

_20

Элемент 20 этого Tuple21

_21

Элемент 21 этого Tuple21

final case class Tuple22[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21, +T22](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22) extends Product22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] with Product with Serializable

Кортеж из 22 элементов; каноническое представление scala.Product22.

_1

Элемент 1 этого Tuple22

_2

Элемент 2 этого Tuple22

_3

Элемент 3 этого Tuple22

_4

Элемент 4 этого Tuple22

_5

Элемент 5 этого Tuple22

_6

Элемент 6 этого Tuple22

_7

Элемент 7 этого Tuple22

_8

Элемент 8 этого Tuple22

_9

Элемент 9 этого Tuple22

_10

Элемент 10 этого Tuple22

_11

Элемент 11 этого Tuple22

_12

Элемент 12 этого Tuple22

_13

Элемент 13 этого Tuple22

_14

Элемент 14 этого Tuple22

_15

Элемент 15 этого Tuple22

_16

Элемент 16 этого Tuple22

_17

Элемент 17 этого Tuple22

_18

Элемент 18 этого Tuple22

_19

Элемент 19 этого Tuple22

_20

Элемент 20 этого Tuple22

_21

Элемент 21 этого Tuple22

_22

Элемент 22 этого Tuple22

final case class Tuple3[+T1, +T2, +T3](_1: T1, _2: T2, _3: T3) extends Product3[T1, T2, T3] with Product with Serializable

Кортеж из 3 элементов; каноническое представление scala.Product3.

_1

Элемент 1 этого Tuple3

_2

Элемент 2 этого Tuple3

_3

Элемент 3 этого Tuple3

final case class Tuple4[+T1, +T2, +T3, +T4](_1: T1, _2: T2, _3: T3, _4: T4) extends Product4[T1, T2, T3, T4] with Product with Serializable

Кортеж из 4 элементов; каноническое представление scala.Product4.

_1

Элемент 1 этого Tuple4

_2

Элемент 2 этого Tuple4

_3

Элемент 3 этого Tuple4

_4

Элемент 4 этого Tuple4

final case class Tuple5[+T1, +T2, +T3, +T4, +T5](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5) extends Product5[T1, T2, T3, T4, T5] with Product with Serializable

Кортеж из 5 элементов; каноническое представление scala.Product5.

_1

Элемент 1 этого кортежа Tuple5

_2

Элемент 2 этого кортежа Tuple5

_3

Элемент 3 этого кортежа Tuple5

_4

Элемент 4 этого кортежа Tuple5

_5

Элемент 5 этого кортежа Tuple5

final case class Tuple6[+T1, +T2, +T3, +T4, +T5, +T6](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6) extends Product6[T1, T2, T3, T4, T5, T6] with Product with Serializable

Кортеж из 6 элементов; каноническое представление scala.Product6.

_1

Элемент 1 этого кортежа Tuple6

_2

Элемент 2 этого кортежа Tuple6

_3

Элемент 3 этого кортежа Tuple6

_4

Элемент 4 этого кортежа Tuple6

_5

Элемент 5 этого кортежа Tuple6

_6

Элемент 6 этого кортежа Tuple6

final case class Tuple7[+T1, +T2, +T3, +T4, +T5, +T6, +T7](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7) extends Product7[T1, T2, T3, T4, T5, T6, T7] with Product with Serializable

Кортеж из 7 элементов; каноническое представление scala.Product7.

_1

Элемент 1 этого кортежа Tuple7

_2

Элемент 2 этого кортежа Tuple7

_3

Элемент 3 этого кортежа Tuple7

_4

Элемент 4 этого кортежа Tuple7

_5

Элемент 5 этого кортежа Tuple7

_6

Элемент 6 этого кортежа Tuple7

_7

Элемент 7 этого кортежа Tuple7

final case class Tuple8[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8) extends Product8[T1, T2, T3, T4, T5, T6, T7, T8] with Product with Serializable

Кортеж из 8 элементов; каноническое представление scala.Product8.

_1

Элемент 1 этого кортежа Tuple8

_2

Элемент 2 этого кортежа Tuple8

_3

Элемент 3 этого кортежа Tuple8

_4

Элемент 4 этого кортежа Tuple8

_5

Элемент 5 этого кортежа Tuple8

_6

Элемент 6 этого кортежа Tuple8

_7

Элемент 7 этого кортежа Tuple8

_8

Элемент 8 этого кортежа Tuple8

final кортеж Tuple9[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9) extends Product9[T1, T2, T3, T4, T5, T6, T7, T8, T9] with Product with Serializable

Кортеж из 9 элементов; каноническое представление scala.Product9.

_1

Элемент 1 этого кортежа Tuple9

_2

Элемент 2 этого кортежа Tuple9

_3

Элемент 3 этого кортежа Tuple9

_4

Элемент 4 этого кортежа Tuple9

_5

Элемент 5 этого кортежа Tuple9

_6

Элемент 6 этого кортежа Tuple9

_7

Элемент 7 этого кортежа Tuple9

_8

Элемент 8 этого кортежа Tuple9

_9

Элемент 9 этого кортежа Tuple9

final кортеж UninitializedFieldError(msg: String) extends RuntimeException with Product with Serializable

Этот класс реализует ошибки, которые генерируются всякий раз, когда поле используется до его инициализации.

Такие проверки во время выполнения по умолчанию не генерируются. Их можно включить с помощью параметра компилятора -Xcheckinit.

Since

2.7

абстрактный конечный класс Unit extends AnyVal

Unit является подтипом scala.AnyVal. Существует только одно значение типа Unit, (), и оно не представлено ни одним объектом в базовой системе выполнения. Метод с типом возврата Unit аналогичен методу Java, который объявлен void.

тип UnsupportedOperationException = java.lang.UnsupportedOperationException

тип Vector[+A] = scala.collection.immutable.Vector[A]

класс deprecated extends Annotation with StaticAnnotation

Аннотация, которая обозначает, что определение устарело. При использовании аннотированного определения генерируется предупреждение об устарелости.

Авторы библиотек должны указывать политику устарелости в документации, чтобы помочь разработчикам понять, как долго будет сохраняться устаревшее определение.

Авторы библиотек должны добавлять имя своей библиотеки к номеру версии, чтобы помочь разработчикам отличать устарелости, исходящие из разных библиотек:

@deprecated("this method will be removed", "FooLib 12.0")
def oldMethod(x: Int) = ...

Компилятор будет генерировать предупреждения об устарелости, сгруппированные по библиотеке и версии:

oldMethod(1)
oldMethod(2)
aDeprecatedMethodFromLibraryBar(3, 4)

// warning: there was one deprecation warning (since BarLib 3.2)
// warning: there were two deprecation warnings (since FooLib 12.0)
// warning: there were three deprecation warnings in total; re-run with -deprecation for details

@deprecated в языке Scala и его стандартной библиотеке

Устаревшее свойство языка Scala или определение в стандартной библиотеке Scala будет сохранено по крайней мере для текущей основной версии.

Это означает, что элемент, устаревший в какой-то версии 2.12.x, будет сохранен во всех версиях 2.12.x, но может быть удален в 2.13. (Устаревший элемент может храниться дольше для облегчения миграции. Разработчики не должны полагаться на это.)

Специальная политика устарелости для Scala 2.12
Команда Scala приняла специальную политику устарелости для Scala 2.12:

Поскольку обновление с 2.11 до 2.12 также требует обновления с Java 6 до Java 8, устаревшие элементы обычно не будут удалены в этом выпуске, чтобы облегчить миграцию и кросс-компиляцию.

Annotations
@getter() @setter() @beanGetter() @beanSetter() @field()
Since

2.3

См. также

Официальная документация по бинарной совместимости.

scala.deprecatedInheritance

scala.deprecatedOverriding

scala.deprecatedName

класс deprecatedInheritance extends Annotation with StaticAnnotation

Аннотация, обозначающая, что наследование от класса устарело.

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

Предупреждения не генерируются, если подкласс находится в том же модуле компиляции.

Авторы библиотек должны указать политику устаревания своей библиотеки в своей документации, чтобы дать разработчикам руководство по тому, когда тип, аннотированный с @deprecatedInheritance, будет final.

Авторы библиотек должны добавлять имя своей библиотеки перед номером версии, чтобы помочь разработчикам отличать устаревания, приходящие из разных библиотек:

@deprecatedInheritance("this class will be made final", "FooLib 12.0")
class Foo
val foo = new Foo     // no deprecation warning
class Bar extends Foo
// warning: inheritance from class Foo is deprecated (since FooLib 12.0): this class will be made final
// class Bar extends Foo
//                   ^
Аннотации
@getter() @setter() @beanGetter() @beanSetter()
С

2.10

См. также

scala.deprecated

scala.deprecatedOverriding

scala.deprecatedName

class deprecatedName extends Annotation with StaticAnnotation

Аннотация, обозначающая, что имя параметра устарело.

Использование этого имени в именованном аргументе генерирует предупреждение об устаревании.

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

Авторы библиотек должны добавлять имя своей библиотеки перед номером версии, чтобы помочь разработчикам отличать устаревания, приходящие из разных библиотек:

def inc(x: Int, @deprecatedName('y, "FooLib 12.0") n: Int): Int = x + n
inc(1, y = 2)

вызовет следующее предупреждение:

warning: the parameter name y is deprecated (since FooLib 12.0): use n instead
inc(1, y = 2)
         ^
Аннотации
@param()
С

2.8.1

См. также

scala.deprecated

scala.deprecatedInheritance

scala.deprecatedOverriding

class deprecatedOverriding extends Annotation with StaticAnnotation

Аннотация, обозначающая, что переопределение члена устарело.

Переопределение такого члена в подклассе затем генерирует предупреждение.

Авторы библиотек должны указать политику устаревания своей библиотеки в своей документации, чтобы дать разработчикам руководство по тому, когда метод, аннотированный с @deprecatedOverriding, будет final.

Авторы библиотек должны добавлять имя своей библиотеки перед номером версии, чтобы помочь разработчикам отличать устаревания, приходящие из разных библиотек:

class Foo {
  @deprecatedOverriding("this method will be made final", "FooLib 12.0")
  def add(x: Int, y: Int) = x + y
}
class Bar extends Foo // no deprecation warning
class Baz extends Foo {
  override def add(x: Int, y: Int) = x - y
}
// warning: overriding method add in class Foo is deprecated (since FooLib 12.0): this method will be made final
// override def add(x: Int, y: Int) = x - y
//              ^
Аннотации
@getter() @setter() @beanGetter() @beanSetter()
С

2.10

См. также

scala.deprecated

scala.deprecatedInheritance

scala.deprecatedName

class inline extends Annotation with StaticAnnotation

Аннотация на методах, запрашивающая, чтобы компилятор особенно старался встраивать аннотированный метод. Аннотация может быть использована на месте определения или на месте вызова.

@inline   final def f1(x: Int) = x
@noinline final def f2(x: Int) = x
          final def f3(x: Int) = x

 def t1 = f1(1)              // inlined if possible
 def t2 = f2(1)              // not inlined
 def t3 = f3(1)              // may be inlined (heuristics)
 def t4 = f1(1): @noinline   // not inlined (override at callsite)
 def t5 = f2(1): @inline     // inlined if possible (override at callsite)
 def t6 = f3(1): @inline     // inlined if possible
 def t7 = f3(1): @noinline   // not inlined
}

Примечание: скобки необходимы при аннотировании места вызова внутри более крупного выражения.

def t1 = f1(1) + f1(1): @noinline   // equivalent to (f1(1) + f1(1)): @noinline
def t2 = f1(1) + (f1(1): @noinline) // the second call to f1 is not inlined

class native extends Annotation with StaticAnnotation

Маркер для нативных методов.

@native def f(x: Int, y: List[Long]): String = ...

Метод, помеченный @native, компилируется в нативный метод платформы, при этом отбрасывается тело метода (если оно есть). Тело будет проверено на типы, если оно присутствует.

Метод, помеченный как @native, должен быть членом класса, а не тракта (с 2.12).

С

2.6

class noinline extends Annotation with StaticAnnotation

Аннотация на методах, которая запрещает компилятору встраивать метод, независимо от того, насколько безопасным кажется встраивание. Аннотация может быть использована на месте определения или на месте вызова.

@inline   final def f1(x: Int) = x
@noinline final def f2(x: Int) = x
          final def f3(x: Int) = x

 def t1 = f1(1)              // inlined if possible
 def t2 = f2(1)              // not inlined
 def t3 = f3(1)              // may be inlined (heuristics)
 def t4 = f1(1): @noinline   // not inlined (override at callsite)
 def t5 = f2(1): @inline     // inlined if possible (override at callsite)
 def t6 = f3(1): @inline     // inlined if possible
 def t7 = f3(1): @noinline   // not inlined
}

Примечание: скобки необходимы при аннотировании места вызова внутри более крупного выражения.

def t1 = f1(1) + f1(1): @noinline   // equivalent to (f1(1) + f1(1)): @noinline
def t2 = f1(1) + (f1(1): @noinline) // the second call to f1 is not inlined
С

2.5

class specialized extends Annotation with StaticAnnotation

Аннотировать параметры типа, для которых код должен быть автоматически специализирован. Например:

class MyList[@specialized T] ...

Тип T может быть специализирован на подмножестве примитивных типов, указав список примитивных типов для специализации:

class MyList[@specialized(Int, Double, Boolean) T] ..
С

2.8

class throws[T <: Throwable] extends Annotation with StaticAnnotation

Аннотация для указания исключений, выбрасываемых методом. Например:

class Reader(fname: String) {
  private val in = new BufferedReader(new FileReader(fname))
  @throws[IOException]("if the file doesn't exist")
  def read() = in.read()
}
С

2.1

class transient extends Annotation with StaticAnnotation

Аннотации
@field()

класс unchecked extends Annotation

Аннотация, указывающая, что аннотированный элемент не должен рассматриваться для дополнительных проверок компилятора. Примеры применения включают аннотирование объекта матча для подавления предупреждений об исчерпываемости и аннотирование аргумента типа в случае матча для подавления предупреждений о невыверенности.

Такое подавление должно использоваться с осторожностью, в противном случае могут возникнуть scala.MatchError или java.lang.ClassCastException во время выполнения. В большинстве случаев следует устранить предупреждение, а не подавлять его.

object Test extends App {
  // This would normally warn "match is not exhaustive"
  // because `None` is not covered.
  def f(x: Option[String]) = (x: @unchecked) match { case Some(y) => y }
  // This would normally warn "type pattern is unchecked"
  // but here will blindly cast the head element to String.
  def g(xs: Any) = xs match { case x: List[String @unchecked] => x.head }
}
С момента

2.4

класс volatile extends Annotation with StaticAnnotation

Аннотации
@field()

тракт DelayedInit extends AnyRef

Классы и объекты (но не тракты), наследующие DelayedInit маркерный тракт, будут иметь свой код инициализации переписанный следующим образом: code становится delayedInit(code).

Код инициализации включает все операторы и все определения значений, которые выполняются во время инициализации.

Пример:

trait Helper extends DelayedInit {
  def delayedInit(body: => Unit) = {
    println("dummy text, printed before initialization of C")
    body // evaluates the initialization code of C
  }
}

class C extends Helper {
  println("this is the initialization code of C")
}

object Test extends App {
  val c = new C
}

Должно привести к следующему выводу:

dummy text, printed before initialization of C
this is the initialization code of C
Аннотации
@deprecated
Устарело

(С версии 2.11.0) Семантика DelayedInit может быть неожиданной. Поддержка App будет продолжена. Более подробную информацию см. в примечаниях к выпуску: https://github.com/scala/scala/releases/tag/v2.11.0

См. также

"Подраздел 'Задержанная инициализация' Спецификации языка Scala (раздел 5.1)

тракт NotNull extends Any

Маркерный тракт для элементов, которые не могут быть null

Аннотации
@deprecated
Устарело

(С версии 2.11.0) этот тракт будет удален

С момента

2.5

абстрактный класс Responder[+A] extends Serializable

Экземпляры responder — это строительные блоки небольших программ, написанных в стиле передачи продолжения. Используя классы responder в for-циклах, можно встраивать языки предметной области в Scala, при этом программы в этих DSL кажутся написанными в прямом стиле.

Аннотации
@deprecated
Устарело

(С версии 2.11.0) этот класс будет удален

С момента

2.1

final класс UninitializedError extends RuntimeException

Этот класс представляет ошибки неинициализированных переменных/значений.

Аннотации
@deprecated
Устарело

(С версии 2.12.7) будет удален в будущей версии

С момента

2.5

класс remote extends Annotation with StaticAnnotation

Аннотация, обозначающая класс, к которому она применена, как удаляемый.

Например, код Scala

@remote trait Hello {
  def sayHello(): String
}

эквивалентен следующему коду Java:

public interface Hello extends java.rmi.Remote {
    String sayHello() throws java.rmi.RemoteException;
}
Аннотации
@deprecated
Устарело

(С версии 2.12.0) вместо этого используйте расширение java.rmi.Remote и добавьте @throws[java.rmi.RemoteException] в публичные методы

Члены-значения

val #::: scala.collection.immutable.Stream.#::.type

val +:: scala.collection.+:.type

val :+: scala.collection.:+.type

val ::: scala.collection.immutable.::.type

val AnyRef: Specializable

val BigDecimal: scala.math.BigDecimal.type

val BigInt: scala.math.BigInt.type

val Either: scala.util.Either.type

val Equiv: scala.math.Equiv.type

val Fractional: scala.math.Fractional.type

val IndexedSeq: scala.collection.IndexedSeq.type

val Integral: scala.math.Integral.type

val Iterable: scala.collection.Iterable.type

val Iterator: scala.collection.Iterator.type

val Left: scala.util.Left.type

val List: scala.collection.immutable.List.type

val Nil: scala.collection.immutable.Nil.type

val Numeric: scala.math.Numeric.type

val Ordered: scala.math.Ordered.type

val Ordering: scala.math.Ordering.type

val Range: scala.collection.immutable.Range.type

val Right: scala.util.Right.type

val Seq: scala.collection.Seq.type

val Stream: scala.collection.immutable.Stream.type

val StringBuilder: scala.collection.mutable.StringBuilder.type

val Traversable: scala.collection.Traversable.type

val Vector: scala.collection.immutable.Vector.type

object Array extends FallbackArrayBuilding with Serializable

Утилитарные методы для работы с массивами. Например:

val a = Array(1, 2)
val b = Array.ofDim[Int](2)
val c = Array.concat(a, b)

где объекты массивов a, b и c имеют соответственно значения Array(1, 2), Array(0, 0) и Array(1, 2, 0, 0).

Since

1.0

object Boolean extends AnyValCompanion

object Byte extends AnyValCompanion

object Char extends AnyValCompanion

object Console extends DeprecatedConsole with AnsiColor

Реализует функциональность вывода значений Scala в терминал. Для чтения значений используйте StdIn. Также определяет константы для форматирования текста в терминалах ANSI.

Вывод в консоль

Используйте методы print для вывода текста.

scala> Console.printf(
  "Today the outside temperature is a balmy %.1f°C. %<.1f°C beats the previous record of %.1f°C.\n",
  -137.0,
  -135.05)
Today the outside temperature is a balmy -137.0°C. -137.0°C beats the previous record of -135.1°C.

Коды эскейпа ANSI

Используйте коды эскейпа ANSI для изменения цвета вывода в консоль в STDOUT или STDERR.

import Console.{GREEN, RED, RESET, YELLOW_B, UNDERLINED}

object PrimeTest {

  def isPrime(): Unit = {

    val candidate = io.StdIn.readInt().ensuring(_ > 1)

    val prime = (2 to candidate - 1).forall(candidate % _ != 0)

    if (prime)
      Console.println(s"${RESET}${GREEN}yes${RESET}")
    else
      Console.err.println(s"${RESET}${YELLOW_B}${RED}${UNDERLINED}NO!${RESET}")
  }

  def main(args: Array[String]): Unit = isPrime()

}
$ scala PrimeTest
1234567891
yes
$ scala PrimeTest
56474
НЕТ!

Переопределение ввода-вывода

Используйте переопределение ввода-вывода для временной замены потоков ввода и/или вывода. В данном примере метод, основанный на потоках, обернут в функцию.

import java.io.{ByteArrayOutputStream, StringReader}

object FunctionalPrimeTest {

  def isPrime(candidate: Int): Boolean = {

    val input = new StringReader(s"$candidate\n")
    val outCapture = new ByteArrayOutputStream
    val errCapture = new ByteArrayOutputStream

    Console.withIn(input) {
      Console.withOut(outCapture) {
        Console.withErr(errCapture) {
          PrimeTest.isPrime()
        }
      }
    }

    if (outCapture.toByteArray.nonEmpty) // "yes"
      true
    else if (errCapture.toByteArray.nonEmpty) // "NO!"
      false
    else throw new IllegalArgumentException(candidate.toString)
  }

  def main(args: Array[String]): Unit = {
    val primes = (2 to 50) filter (isPrime)
    println(s"First primes: $primes")
  }

}
$ scala FunctionalPrimeTest
Первые простые числа: Vector(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47)
С момента

1.0

объект Double extends AnyValCompanion

объект Float extends AnyValCompanion

объект Function

Модуль, определяющий вспомогательные методы для функционального программирования высшего порядка.

С момента

1.0

объект Int extends AnyValCompanion

объект Long extends AnyValCompanion

объект None extends Option[Nothing] with Product with Serializable

Этот объект-объект представляет несуществующие значения.

Аннотации
@SerialVersionUID()
С момента

1.0

объект Option extends Serializable

объект PartialFunction

Несколько полезных операций, использующих дополнительную информацию, доступную в частичных функциях. Примеры:

import PartialFunction._

def strangeConditional(other: Any): Boolean = cond(other) {
  case x: String if x == "abc" || x == "def"  => true
  case x: Int => true
}
def onlyInt(v: Any): Option[Int] = condOpt(v) { case x: Int => x }
С момента

2.8

объект Predef extends LowPriorityImplicits with DeprecatedPredef

Объект Predef предоставляет определения, доступные во всех единицах компиляции Scala без явного квалификации.

Типы общего использования

Predef предоставляет псевдонимы типов для типов, которые часто используются, такие как неизменяемые типы коллекций scala.collection.immutable.Map, scala.collection.immutable.Set, и конструкторы scala.collection.immutable.List (scala.collection.immutable.:: и scala.collection.immutable.Nil).

Вывод в консоль

Для базового вывода в консоль, Predef предоставляет удобные методы print и println, которые являются псевдонимами методов в объекте scala.Console.

Утверждения

Набор assert функций предоставляется для использования в качестве способа документирования и динамической проверки инвариантов в коде. Вызовы assert могут быть исключены во время компиляции путём указания опции командной строки -Xdisable-assertions, которая повышает -Xelide-below над elidable.ASSERTION, до scalac команды.

Также предоставляются варианты assert для использования с инструментами статического анализа: assume, require и ensuring. require и ensuring предназначены для использования в качестве способа спецификации стиля «design by contract» предусловий и постусловий для функций, с намерением, что эти спецификации могут быть использованы инструментом статического анализа. Например,

def addNaturals(nats: List[Int]): Int = {
  require(nats forall (_ >= 0), "List contains negative numbers")
  nats.foldLeft(0)(_ + _)
} ensuring(_ >= 0)

Объявление addNaturals указывает, что список целых чисел, передаваемых, должен содержать только натуральные числа (то есть неотрицательные), и что возвращаемый результат также будет натуральным. require отличается от assert тем, что если условие не выполняется, то виноват вызывающий функцию, а не логическая ошибка в самом addNaturals. ensuring является формой assert, которая объявляет гарантию, предоставляемую функцией относительно её возвращаемого значения.

Неявные преобразования

Также здесь определено несколько часто используемых неявных преобразований, а также в родительском типе scala.LowPriorityImplicits. Предоставляются неявные преобразования для «расширения» числовых значений, например, преобразования значения Short в Long при необходимости, а также для добавления дополнительных функций высшего порядка к массивам. Более подробное описание см. в документации к scala.Array.

объект Product1

объект Product10

объект Product11

объект Product12

объект Product13

объект Product14

объект Product15

объект Product16

объект Product17

объект Product18

объект Product19

объект Product2

объект Product20

объект Product21

объект Product22

объект Product3

объект Product4

объект Product5

объект Product6

объект Product7

объект Product8

объект Product9

объект Proxy

объект Short реализует AnyValCompanion

объект Specializable

объект StringContext реализует Serializable

объект Symbol реализует UniquenessCache[String, Symbol] и Serializable

объект Unit реализует AnyValCompanion

объект language

Объект scala.language управляет доступными программисту языковыми возможностями, как предлагается в документе SIP-18.

Каждая из этих возможностей должна быть явно импортирована в текущую область видимости, чтобы стать доступной:

import language.postfixOps // or language._
List(1, 2, 3) reverse

Доступные языковые возможности:

    dynamics позволяет определять вызовы, переписывая их, используя трайт Dynamic postfixOps позволяет использовать постфиксные операторы reflectiveCalls позволяет использовать структурные типы implicitConversions позволяет определять неявные методы и члены higherKinds позволяет писать типы высших порядков existentials позволяет писать экзистенциальные типы experimental содержит более новые возможности, которые еще не были протестированы в производстве

объект languageFeature

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

Spec-Zone.ru

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