Объект scala.Predef
объект Predef extends LowPriorityImplicits with DeprecatedPredef
Члены типа
запечатанный абстрактный класс <:<[-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
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]): 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 по умолчанию зависит от платформы.
- возвращает
копию объекта-получателя.
неявный 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[_]
def hashCode(): Int
Метод hashCode для ссылочных типов. См. hashCode в scala.Any.
- returns
значение хэш-кода для этого объекта.
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, если возникла проблема с строкой формата или аргументами- См. также
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
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
Объект
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.