Spec-Zone.ru › Scala 2.13 Library

Объект scala.Predef

объект Predef extends LowPriorityImplicits

Объект 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 предназначены для использования в качестве средства спецификации стиля "дизайн по контракту" предопределений и постусловий для функций, с целью, что эти спецификации могут быть использованы инструментом статического анализа. Например,

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.

Источник
Predef.scala
Линейные Супертипы
LowPriorityImplicits, LowPriorityImplicits2, AnyRef, Any

Члены-Типы

неявный конечный класс ArrayCharSequence extends CharSequence

неявный конечный класс ArrowAssoc[A] extends AnyVal

тип Class[T] = java.lang.Class[T]

неявный конечный класс Ensuring[A] extends AnyVal

тип Function[-A, +B] = (A) => B

тип Manifest[T] = reflect.Manifest[T]

Аннотации
@implicitNotFound("Нет доступного Manifest для ${T}.")

тип Map[K, +V] = collection.immutable.Map[K, V]

тип OptManifest[T] = reflect.OptManifest[T]

неявный конечный класс SeqCharSequence extends CharSequence

тип Set[A] = collection.immutable.Set[A]

тип String = java.lang.String

Тип String в Scala содержит все методы базового java.lang.String, являясь просто его псевдонимом. (См. документацию, соответствующую вашей версии Java, например, http://docs.oracle.com/javase/8/docs/api/java/lang/String.html.) Кроме того, расширяющие методы в scala.collection.StringOps добавляются неявно через преобразование augmentString.

неявный конечный класс StringFormat[A] extends AnyVal

Значения членов

final def !=(arg0: Any): Boolean

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

returns

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

Definition Classes
AnyRef → Any

final def ##(): Int

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

returns

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

Definition Classes
AnyRef → Any

implicit def $conforms[A]: (A) => A

Неявное значение типа A => A доступно для всех A, так как его всегда можно реализовать с помощью функции идентичности. Это также означает, что неявное значение типа A => B всегда доступно, когда A <: B, потому что (A => A) <: (A => B).

val ->: Tuple2.type

Разрешает деструктуризацию кортежей с таким же синтаксисом, как и их построение.

Пример:
    val tup = "foobar" -> 3
    
    val c = tup match {
      case str -> i => str.charAt(i)
    }

final def ==(arg0: Any): Boolean

Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

returns

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

Definition Classes
AnyRef → Any

def ???: Nothing

??? может использоваться для маркировки методов, которые еще предстоит реализовать.

Исключения

NotImplementedError при вызове ???.

implicit def Boolean2boolean(x: java.lang.Boolean): Boolean

implicit def Byte2byte(x: java.lang.Byte): Byte

implicit def Character2char(x: Character): Char

implicit def Double2double(x: java.lang.Double): Double

implicit def Float2float(x: java.lang.Float): Float

implicit def Integer2int(x: Integer): Int

implicit def Long2long(x: java.lang.Long): Long

val Manifest: reflect.Manifest.type

val Map: collection.immutable.Map.type

val NoManifest: reflect.NoManifest.type

val Set: collection.immutable.Set.type

implicit def Short2short(x: java.lang.Short): Short

final def asInstanceOf[T0]: T0

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

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

returns

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

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

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

final def assert(assertion: Boolean, message: => Any): Unit

Проверяет выражение, выбрасывая AssertionError если ложно. Вызовы этого метода не будут генерироваться, если -Xelide-below больше ASSERTION.

assertion

выражение для проверки

message

строка для включения в сообщение об ошибке

Annotations
@elidable(ASSERTION) @inline()
См. также

elidable

def assert(assertion: Boolean): Unit

Проверяет выражение, выбрасывая AssertionError если ложно. Вызовы этого метода не будут генерироваться, если -Xelide-below больше ASSERTION.

assertion

выражение для проверки

Annotations
@elidable(ASSERTION)
См. также

elidable

final def assume(assumption: Boolean, message: => Any): Unit

Проверяет выражение, выбрасывая AssertionError если ложно. Этот метод отличается от assert только выраженным намерением: assert содержит предикат, который нужно доказать, а assume содержит аксиому для статического анализатора. Вызовы этого метода не будут генерироваться, если -Xelide-below больше ASSERTION.

assumption

выражение для проверки

message

строка для включения в сообщение об ошибке

Annotations
@elidable(ASSERTION) @inline()
См. также

elidable

def assume(assumption: Boolean): Unit

Проверяет выражение, выбрасывая AssertionError если ложно. Этот метод отличается от assert только выраженным намерением: assert содержит предикат, который нужно доказать, а assume содержит аксиому для статического анализатора. Вызовы этого метода не будут генерироваться, если -Xelide-below больше ASSERTION.

assumption

выражение для проверки

Annotations
@elidable(ASSERTION)
См. также

elidable

implicit def augmentString(x: String): StringOps

Annotations
@inline()

implicit def boolean2Boolean(x: Boolean): java.lang.Boolean

implicit def booleanArrayOps(xs: Array[Boolean]): ArrayOps[Boolean]

Annotations
@inline()

implicit def booleanWrapper(x: Boolean): RichBoolean

Определяющие классы
LowPriorityImplicits
Annotations
@inline()

implicit def byte2Byte(x: Byte): java.lang.Byte

implicit def byteArrayOps(xs: Array[Byte]): ArrayOps[Byte]

Annotations
@inline()

implicit def byteWrapper(x: Byte): RichByte

Мы предпочитаем упакованные типы java.lang.* этим обёрткам в любых потенциальных конфликтах. Конфликты существуют, потому что обёртки должны реализовывать ScalaNumber для того, чтобы иметь симметричный метод equals, но это подразумевает реализацию java.lang.Number также.

Примечание: эти обёртки являются инлайнованными, потому что это классы значений, но вызов xxxWrapper не удаляется, даже если он ничего не делает. Даже в случае инлайнинга каждый узел вызова выполняет безымянный запрос MODULE$ Predef, потому что, возможно, загрузка Predef имеет побочные эффекты!

Определяющие классы
LowPriorityImplicits
Annotations
@inline()

implicit def char2Character(x: Char): Character

неявный def charArrayOps(xs: Массив[Символ]): МассивОперации[Символ]

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

неявный def charWrapper(c: Символ): RichChar

Классы-определения
LowPriorityImplicits
Аннотации
@inline()

def classOf[T]: Класс[T]

Получение представления класса в среде выполнения. classOf[T] эквивалентно литералу класса T.class в Java.

возвращает

Представление класса в среде выполнения типа T.

Пример:
    val listClass = classOf[List[_]]
    // listClass is java.lang.Class[List[_]] = class scala.collection.immutable.List
    
    val mapIntString = classOf[Map[Int,String]]
    // mapIntString is java.lang.Class[Map[Int,String]] = interface scala.collection.immutable.Map

def clone(): AnyRef

Создаёт копию объекта-получателя.

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

возвращает

копию объекта-получателя.

Атрибуты
protected[java.lang]
Классы-определения
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()
Примечание

не определено SLS как член AnyRef

неявный def double2Double(x: Double): java.lang.Double

неявный def doubleArrayOps(xs: Массив[Double]): МассивОперации[Double]

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

неявный def doubleWrapper(x: Double): RichDouble

Классы-определения
LowPriorityImplicits
Аннотации
@inline()

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).

Метод eq реализует отношение эквивалентности на не-нулевых экземплярах AnyRef, и обладает тремя дополнительными свойствами:

    Он согласован: для любых не-нулевых экземпляров x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false. Для любого не-нулевого экземпляра x типа AnyRef, вызовы x.eq(null) и null.eq(x) возвращают false. null.eq(null) возвращает true.

При переопределении методов equals или hashCode важно обеспечить согласованность их поведения с равенством ссылок. Поэтому, если два объекта являются ссылками друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и должны иметь одинаковое хеш-значение (o1.hashCode == o2.hashCode).

возвращает

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

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

def equals(arg0: AnyRef): Boolean

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

См. также equals в scala.Any.

возвращает

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

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

def finalize(): Unit

Вызывается сборщиком мусора для объекта-получателя, когда к объекту больше нет ссылок.

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

Атрибуты
protected[java.lang]
Классы-определения
AnyRef
Аннотации
@throws(classOf[java.lang.Throwable])
Примечание

не определено SLS как член AnyRef

неявный def float2Float(x: Float): java.lang.Float

неявный def floatArrayOps(xs: Массив[Float]): МассивОперации[Float]

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

неявный def floatWrapper(x: Float): RichFloat

Определения классов
LowPriorityImplicits
Аннотации
@inline()

неявный def genericArrayOps[T](xs: Array[T]): ArrayOps[T]

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

неявный def genericWrapArray[T](xs: Array[T]): ArraySeq[T]

Определения классов
LowPriorityImplicits

final def getClass(): java.lang.Class[_ <: AnyRef]

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

возвращает

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

Определения классов
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Метод hashCode для ссылочных типов. См. hashCode в scala.Any.

возвращает

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

Определения классов
AnyRef → Any
Аннотации
@native()

def identity[A](x: A): A

Метод, возвращающий входное значение.

A

тип входного значения x.

x

значение типа A, которое должно быть возвращено.

возвращает

значение x.

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

def implicitly[T](неявный e: T): T

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

T

тип значения, которое требуется вызвать

возвращает

неявное значение типа T

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

неявный def int2Integer(x: Int): Integer

неявный def intArrayOps(xs: Array[Int]): ArrayOps[Int]

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

неявный def intWrapper(x: Int): RichInt

Определения классов
LowPriorityImplicits
Аннотации
@inline()

final def isInstanceOf[T0]: Boolean

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

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

возвращает

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

Определения классов
Any

def locally[T](x: T): T

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

Аннотации
@inline()
Пример:

    Разделение блоков кода от new:

    val x = new AnyRef
    {
      val y = ...
      println(y)
    }
    // the { ... } block is seen as the body of an anonymous class
    
    val x = new AnyRef
    
    {
      val y = ...
      println(y)
    }
    // an empty line is a brittle "fix"
    
    val x = new AnyRef
    locally {
      val y = ...
      println(y)
    }
    // locally guards the block and helps communicate intent

неявный def long2Long(x: Long): java.lang.Long

неявный def longArrayOps(xs: Array[Long]): ArrayOps[Long]

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

неявный def longWrapper(x: Long): RichLong

Определения классов
LowPriorityImplicits
Аннотации
@inline()

def manifest[T](неявный m: Manifest[T]): Manifest[T]

final def ne(arg0: AnyRef): Boolean

Эквивалентно !(this eq that).

возвращает

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

Определения классов
AnyRef

final def notify(): Unit

Разбуждает единственную нить, ожидающую монитора объекта-получателя.

Определения классов
AnyRef
Аннотации
@native()
Примечание

не специфицировано SLS как член AnyRef

final def notifyAll(): Unit

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

Определения классов
AnyRef
Аннотации
@native()
Примечание

не специфицировано SLS как член AnyRef

def optManifest[T](неявный m: OptManifest[T]): OptManifest[T]

def print(x: Any): Unit

Выводит объект в out с использованием его метода toString.

x

выводимый объект; может быть null.

def printf(text: String, xs: Any*): Unit

Выводит свои аргументы в виде отформатированной строки в стандартный вывод, основываясь на шаблоне строки (аналогично printf в C).

Интерпретация формата описана в java.util.Formatter.

Рассмотрите использование интерполятора f для большей типобезопасности и удобочитаемости.

text

шаблон форматирования аргументов.

Исключения

java.lang.IllegalArgumentException если возникла проблема с форматом строки или аргументами

См. также

StringContext.f

def println(x: Any): Unit

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

x

выводимый объект.

def println(): Unit

неявный def refArrayOps[T <: AnyRef](xs: Array[T]): ArrayOps[T]

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

final def require(requirement: Boolean, message: => Any): Unit

Проверяет выражение, бросая IllegalArgumentException если ложно. Этот метод похож на assert, но обвиняет вызывающий метод в нарушении условия.

requirement

выражение для проверки

message

строка для включения в сообщение об ошибке

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

def require(requirement: Boolean): Unit

Проверяет выражение, бросая IllegalArgumentException если ложно. Этот метод похож на assert, но обвиняет вызывающий метод в нарушении условия.

requirement

выражение для проверки

явное def short2Short(x: Short): java.lang.Short

явное def shortArrayOps(xs: Array[Short]): ArrayOps[Short]

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

явное def shortWrapper(x: Short): RichShort

Классы-определения
LowPriorityImplicits
Аннотации
@inline()

final def synchronized[T0](arg0: => T0): T0

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

def toString(): java.lang.String

Создаёт строковое представление этого объекта. По умолчанию это представление зависит от платформы. На платформе Java это конкатенация имени класса, «@» и хэш-кода объекта в шестнадцатеричном формате.

возвращает

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

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

явное def unitArrayOps(xs: Array[Unit]): ArrayOps[Unit]

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

def valueOf[T](явное vt: ValueOf[T]): T

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

Аннотации
@inline()
Пример:
    object Foo
    val foo = valueOf[Foo.type]
    // foo is Foo.type = Foo
    
    val bar = valueOf[23]
    // bar is 23.type = 23

final def wait(): Unit

Классы-определения
AnyRef
Аннотации
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long, arg1: Int): Unit

Классы-определения
AnyRef
Аннотации
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Классы-определения
AnyRef
Аннотации
@throws(classOf[java.lang.InterruptedException]) @native()

явное def wrapBooleanArray(xs: Array[Boolean]): ofBoolean

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

явное def wrapByteArray(xs: Array[Byte]): ofByte

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

явное def wrapCharArray(xs: Array[Char]): ofChar

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

явное def wrapDoubleArray(xs: Array[Double]): ofDouble

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

явное def wrapFloatArray(xs: Array[Float]): ofFloat

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

явное определение wrapIntArray(xs: Массив[Целое]): ofInt

Определения классов
LowPriorityImplicits

явное определение wrapLongArray(xs: Массив[Длинное целое]): ofLong

Определения классов
LowPriorityImplicits

явное определение wrapRefArray[T <: AnyRef](xs: Массив[T]): ofRef[T]

Определения классов
LowPriorityImplicits

явное определение wrapShortArray(xs: Массив[Короткое целое]): ofShort

Определения классов
LowPriorityImplicits

явное определение wrapString(s: Строка): WrappedString

Определения классов
LowPriorityImplicits

явное определение wrapUnitArray(xs: Массив[Единица]): ofUnit

Определения классов
LowPriorityImplicits

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

Spec-Zone.ru

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