Spec-Zone.ru › Scala 2.12 Library

Объект scala.Predef

объект Predef extends LowPriorityImplicits with DeprecatedPredef

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

Типы, Часто Используемые

Предопределенный объект предоставляет псевдонимы типов для часто используемых типов, таких как неизменяемые типы коллекций 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 по мере необходимости, и для добавления дополнительных функций высшего порядка к значениям Array. Более подробное описание содержится в документации scala.Array.

Источник
Predef.scala
Линейные Супертипы

Члены типа

запечатанный абстрактный класс <:<[-From, +To] extends (From) ⇒ To with Serializable

Экземпляр A <:< B свидетельствует о том, что A является подтипом B. Требование неявного аргумента типа A <:< B кодирует обобщенное ограничение A <: B.

Аннотации
@implicitNotFound( msg = ... )
Примечание

нам нужен новый тип конструктор <:< и доказательство conforms, так как повторное использование Function1 и identity приводит к неоднозначности в случае ошибок типа (any2stringadd выводится). Чтобы ограничить любой абстрактный тип T, который находится в области видимости в списке аргументов метода (а не только параметры типа самого метода), просто добавьте неявный аргумент типа T <:< U, где U - требуемое верхнее ограничение; или для нижних границ, используйте: L <:< T, где L - требуемое нижнее ограничение. Частично предоставлено Джейсоном Заугом.

запечатанный абстрактный класс =:=[From, To] extends (From) ⇒ To with Serializable

Экземпляр A =:= B свидетельствует о том, что типы A и B равны.

Аннотации
@implicitNotFound( msg = ... )
См. также

<:< для выражения ограничений подтипов

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

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

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

класс DummyImplicit extends AnyRef

Тип, для которого всегда есть неявное значение.

См. также

scala.Array$, метод fallbackCanBuildFrom

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

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

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

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

тип Map[A, +B] = collection.immutable.Map[A, B]

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

неявный final класс RichException extends AnyVal

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

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

тип String = java.lang.String

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

неявный final класс any2stringadd[A] extends AnyVal

тип ClassManifest[T] = ClassTag[T]

Аннотации
@implicitNotFound( msg = ... ) @deprecated
Устарело

(С версии 2.10.0) используйте scala.reflect.ClassTag вместо этого

тип Pair[+A, +B] = (A, B)

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

(С версии 2.11.0) используйте встроенный синтаксис кортежей или Tuple2 вместо него

тип Triple[+A, +B, +C] = (A, B, C)

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

(С версии 2.11.0) используйте встроенный синтаксис кортежей или Tuple3 вместо него

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

final def !=(arg0: Any): Boolean

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

возвращает

true если !(this == that), иначе false.

Определяющие классы
AnyRef → Any

final def ##(): Int

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

возвращает

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

Определяющие классы
AnyRef → Any

implicit def $conforms[A]: <:<[A, A]

final def ==(arg0: Any): Boolean

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

возвращает

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

Определяющие классы
AnyRef → Any

def ???: Nothing

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

Выбрасываемые исключения

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: ManifestFactory.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

implicit val StringCanBuildFrom: CanBuildFrom[String, Char, String]

final def asInstanceOf[T0]: T0

Привести принимающий объект к типу T0.

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

возвращает

принимающий объект.

Определяющие классы
Any
Выбрасываемые исключения

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

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

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

assertion

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

message

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

Аннотации
@elidable( level = ASSERTION ) @inline()
См. также

elidable

def assert(assertion: Boolean): Unit

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

assertion

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

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

elidable

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

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

assumption

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

message

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

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

elidable

def assume(assumption: Boolean): Unit

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

assumption

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

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

elidable

implicit def augmentString(x: String): StringOps

Annotations
@inline()

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

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

implicit def booleanWrapper(x: Boolean): RichBoolean

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

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

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

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

implicit def charArrayOps(xs: Array[Char]): ofChar

implicit def charWrapper(c: Char): RichChar

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

def classOf[T]: Class[T]

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

Пример:
    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[lang]
Определяющие классы
AnyRef
Аннотации
@throws( ... ) @native()
Примечание

не указано SLS как член AnyRef

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

неявный def doubleArrayOps(xs: Array[Double]): ofDouble

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

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

final def eq(arg0: AnyRef): Boolean

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

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

    Он согласован: для любых не-null экземпляров x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false. Для любого не-null экземпляра 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: Any): Boolean

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

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

возвращает

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

Определяющие классы
AnyRef → Any

неявный def fallbackStringCanBuildFrom[T]: CanBuildFrom[String, T, collection.immutable.IndexedSeq[T]]

Определяющие классы
LowPriorityImplicits

def finalize(): Unit

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

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

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

не указано SLS как член AnyRef

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

неявный def floatArrayOps(xs: Array[Float]): ofFloat

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

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

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

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

Определяющие классы
LowPriorityImplicits

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

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

возвращает

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

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

def hashCode(): Int

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

returns

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

Definition Classes
AnyRef → Any
Annotations
@native()

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

Annotations
@inline()

def implicitly[T](implicit e: T): T

Annotations
@inline()

implicit def int2Integer(x: Int): Integer

implicit def intArrayOps(xs: Array[Int]): ofInt

implicit def intWrapper(x: Int): RichInt

Definition Classes
LowPriorityImplicits
Annotations
@inline()

final def isInstanceOf[T0]: Boolean

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

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

returns

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

Definition Classes
Any

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

Annotations
@inline()

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

implicit def longArrayOps(xs: Array[Long]): ofLong

implicit def longWrapper(x: Long): RichLong

Definition Classes
LowPriorityImplicits
Annotations
@inline()

def manifest[T](implicit m: Manifest[T]): Manifest[T]

final def ne(arg0: AnyRef): Boolean

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

returns

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

Definition Classes
AnyRef

final def notify(): Unit

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

Definition Classes
AnyRef
Annotations
@native()
Note

не указано SLS как член AnyRef

final def notifyAll(): Unit

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

Definition Classes
AnyRef
Annotations
@native()
Note

не указано SLS как член AnyRef

def optManifest[T](implicit 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

implicit def refArrayOps[T <: AnyRef](xs: Array[T]): ofRef[T]

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

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

requirement

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

message

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

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

def require(requirement: Boolean): Unit

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

requirement

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

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

implicit def shortArrayOps(xs: Array[Short]): ofShort

implicit def shortWrapper(x: Short): RichShort

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

final def synchronized[T0](arg0: ⇒ T0): T0

Определяющие классы
AnyRef

def toString(): java.lang.String

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

возвращает

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

Определяющие классы
AnyRef → Any

implicit def tuple2ToZippedOps[T1, T2](x: (T1, T2)): Ops[T1, T2]

implicit def tuple3ToZippedOps[T1, T2, T3](x: (T1, T2, T3)): Ops[T1, T2, T3]

implicit def unaugmentString(x: StringOps): String

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

implicit def unitArrayOps(xs: Array[Unit]): ofUnit

implicit def unwrapString(ws: WrappedString): String

Определяющие классы
LowPriorityImplicits

final def wait(): Unit

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

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

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

final def wait(arg0: Long): Unit

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

implicit def wrapBooleanArray(xs: Array[Boolean]): WrappedArray[Boolean]

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

implicit def wrapByteArray(xs: Array[Byte]): WrappedArray[Byte]

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

implicit def wrapCharArray(xs: Array[Char]): WrappedArray[Char]

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

implicit def wrapDoubleArray(xs: Array[Double]): WrappedArray[Double]

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

implicit def wrapFloatArray(xs: Array[Float]): WrappedArray[Float]

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

implicit def wrapIntArray(xs: Array[Int]): WrappedArray[Int]

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

implicit def wrapLongArray(xs: Array[Long]): WrappedArray[Long]

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

implicit def wrapRefArray[T <: AnyRef](xs: Array[T]): WrappedArray[T]

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

implicit def wrapShortArray(xs: Array[Short]): WrappedArray[Short]

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

implicit def wrapString(s: String): WrappedString

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

implicit def wrapUnitArray(xs: Array[Unit]): WrappedArray[Unit]

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

object =:= extends Serializable

object DummyImplicit

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

Spec-Zone.ru

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