Объект scala.Predef
объект Predef extends LowPriorityImplicits
Члены-Типы
неявный конечный класс 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
строка для включения в сообщение об ошибке
def assert(assertion: Boolean): Unit
Проверяет выражение, выбрасывая AssertionError если ложно. Вызовы этого метода не будут генерироваться, если -Xelide-below больше ASSERTION.
- assertion
выражение для проверки
final def assume(assumption: Boolean, message: => Any): Unit
Проверяет выражение, выбрасывая AssertionError если ложно. Этот метод отличается от assert только выраженным намерением: assert содержит предикат, который нужно доказать, а assume содержит аксиому для статического анализатора. Вызовы этого метода не будут генерироваться, если -Xelide-below больше ASSERTION.
- assumption
выражение для проверки
- message
строка для включения в сообщение об ошибке
def assume(assumption: Boolean): Unit
Проверяет выражение, выбрасывая AssertionError если ложно. Этот метод отличается от assert только выраженным намерением: assert содержит предикат, который нужно доказать, а assume содержит аксиому для статического анализатора. Вызовы этого метода не будут генерироваться, если -Xelide-below больше ASSERTION.
- assumption
выражение для проверки
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 зависит от платформы.
- возвращает
копию объекта-получателя.
неявный 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 с нелокальными возвратами и исключениями, зависят от платформы.
неявный 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]
Возвращает представление класса объекта во время выполнения.
- возвращает
объект класса, соответствующий типу получателя во время выполнения.
def hashCode(): Int
Метод hashCode для ссылочных типов. См. hashCode в scala.Any.
- возвращает
значение хэш-кода для этого объекта.
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если возникла проблема с форматом строки или аргументами- См. также
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
явное 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
Объект
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.