Пакет scala
пакет 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
- См. также
-
Официальная документация по бинарной совместимости.
класс 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
- См. также
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
- См. также
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
- См. также
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
Основные типы Scala. Они всегда доступны без явного импорта.