Object Predef.Predef
object Predef
Объект Predef предоставляет определения, доступные во всех модулях компиляции Scala без явного указания.
Типы, часто используемые в коде
Predef предоставляет псевдонимы типов для типов, которые часто используются, такие как неизменяемые типы коллекций scala.collection.immutable.Map и scala.collection.immutable.Set.
Вывод в консоль
Для базового вывода в консоль, 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.
| Суперобекти | |
|---|---|
| Тип самого объекта |
Служебные методы
Исходный код
??? может использоваться для маркировки методов, которые ещё не реализованы.
| Выбрасывает |
|
|---|
Исходный код
Получение представления типа класса во время выполнения. classOf[T] эквивалентно литералу класса T.class в Java.
| Возвращает | Представление класса Class во время выполнения типа |
|---|---|
| Пример |
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 identity[A](x: A): A
Метод, возвращающий своё входное значение.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | значение |
Исходный код
def implicitly[T](implicit e: T): T
Вызвать неявное значение типа T. Обычно аргумент не передаётся явно.
| Параметры типа |
|
|---|---|
| Возвращает | неявное значение типа |
Исходный код
def locally[T](x: T): T
Используется для обозначения блоков кода как выражений, а не как части анонимных классов и т.п. Это просто другое имя для identity.
| Пример |
Разделение блоков кода от 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
|
|---|
Исходный код
Получить единственное значение типа с уникальным обитателем.
| Пример |
object Foo val foo = valueOf[Foo.type] // foo is Foo.type = Foo val bar = valueOf[23] // bar is 23.type = 23 |
|---|
Утверждения
Эти методы поддерживают проверку программ и корректность во время выполнения.
Исходный код
Проверяет выражение, выбрасывая AssertionError если оно ложно. Вызовы этого метода не будут генерироваться, если -Xelide-below больше, чем ASSERTION.
| Параметры значения |
|
|---|---|
| См. также |
Исходный код
Проверяет выражение, выбрасывая AssertionError если оно ложно. Вызовы этого метода не будут генерироваться, если -Xelide-below больше, чем ASSERTION.
| Параметры значения |
|
|---|---|
| См. также |
Исходный код
Проверяет выражение, выбрасывая AssertionError если оно ложно. Этот метод отличается от assert только выраженным намерением: assert содержит предикат, который нужно доказать, а assume содержит аксиому для статического анализатора. Вызовы этого метода не будут генерироваться, если -Xelide-below больше, чем ASSERTION.
| Параметры значения |
|
|---|---|
| См. также |
Исходный код
Проверяет выражение, выбрасывая AssertionError если оно ложно. Этот метод отличается от assert только выраженным намерением: assert содержит предикат, который нужно доказать, а assume содержит аксиому для статического анализатора. Вызовы этого метода не будут генерироваться, если -Xelide-below больше, чем ASSERTION.
| Параметры значения |
|
|---|---|
| См. также |
Исходный код
Проверяет выражение, выбрасывая IllegalArgumentException если оно ложно. Этот метод похож на assert, но вину за нарушение условия возлагает на вызывающий метод.
| Параметры значения |
|
|---|
Исходный код
Проверяет выражение, выбрасывая IllegalArgumentException если оно ложно. Этот метод похож на assert, но вину за нарушение условия возлагает на вызывающий метод.
| Параметры значения |
|
|---|
Вывод консоли
Эти методы обеспечивают вывод через консоль.
Источник
Выводит объект в out с помощью его метода toString.
| Параметры значения |
|
|---|
Источник
Выводит свои аргументы в виде отформатированной строки в стандартный вывод, основываясь на шаблоне строки (аналогично printf в C).
Интерпретация форматов описана в java.util.Formatter.
Рассмотрите использование интерполятора f как более безопасного с точки зрения типов и более идиоматичного.
| Параметры значения |
|
|---|---|
| Исключения |
|
| См. также |
Источник
Выводит символ новой строки в стандартный вывод.
Источник
Выводит объект в стандартный вывод, после чего — символ новой строки.
| Параметры значения |
|
|---|
Псевдонимы
Эти псевдонимы добавляют выбранные неизменяемые типы в область видимости без импорта.
Источник
val ->: Tuple2.type
Позволяет деструктурировать кортежи с таким же синтаксисом, как и при их создании.
| Пример |
val tup = "foobar" -> 3
val c = tup match {
case str -> i => str.charAt(i)
}
|
|---|
Источник
Источник
type Function[-A, +B] = A => B
Источник
Источник
Источник
Источник
Источник
Тип String в Scala имеет все методы базового типа java.lang.String, являясь просто его псевдонимом.
Кроме того, расширяющие методы из scala.collection.StringOps добавляются неявным образом через преобразование augmentString.
Преобразования строк
Преобразования из String в StringOps или WrappedString.
Источник
Источник
| Наследуется от | LowPriorityImplicits (скрыто) |
|---|
Неявные классы
Эти неявные классы добавляют полезные расширяющие методы к каждому типу.
Источник
final implicit class ArrowAssoc[A](self: A) extends AnyVal
Источник
final implicit def ArrowAssoc[A](self: A): ArrowAssoc[A]
Источник
Источник
Источник
final implicit class StringFormat[A](self: A) extends AnyVal
Источник
final implicit def StringFormat[A](self: A): StringFormat[A]
Источник
final implicit class any2stringadd[A](self: A) extends AnyVal
Вводит оператор конкатенации строк + для любых классов.
| Устаревший |
|---|
Источник
final implicit def any2stringadd[A](self: A): any2stringadd[A]
Вводит оператор конкатенации строк + для любых классов.
Оборачиватели CharSequence
Оборачиватели, реализующие интерфейс CharSequence, и являющиеся неявными классами.
Источник
Источник
Источник
Источник
Java в Scala
Неявное преобразование из типов Java-обёрток примитивных типов в эквиваленты Scala.
Источник
Source
Source
Source
Source
Source
Source
Source
Scala to Java
Неявное преобразование из Scala AnyVals в эквиваленты обёртки Java для примитивных типов.
Source
Source
Source
Source
Source
Source
Source
Source
Массивы в ArraySeq
Преобразования из массивов в ArraySeq.
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Source
| Inherited from | LowPriorityImplicits (hidden) |
|---|
Типы
Source
Source
type OptManifest[T] = OptManifest[T]
Конкретные методы
Source
Источник
Источник
transparent inline def summon[T](using inline x: T): T
Получить заданное значение типа T. Обычно аргумент не передается явно.
| Параметры типа |
|
|---|---|
| Возвращаемое значение |
заданное значение с типом: указанный параметр типа |
Конкретные поля
Источник
Источник
val NoManifest: NoManifest.type
Расширения
extension (x: AnyRef | Null)Источник
Разрешает проверку выражения типа T|Null, где T является подтипом AnyRef, на null с использованием eq вместо только ==. Это необходимо, так как Null больше не имеет методов eq или ne, только == и !=, унаследованных от Any.
Источник
Разрешает проверку выражения типа T|Null, где T является подтипом AnyRef, на null с использованием ne вместо только !=. Это необходимо, так как Null больше не имеет методов eq или ne, только == и !=, унаследованных от Any.
Источник
Удаляет возможность значения быть null. Обратите внимание, что .nn выполняет проверенную приведение, поэтому при вызове на значении null будет брошено исключение NullPointerException.
| Пример |
val s1: String | Null = "hello" val s2: String = s1.nn val s3: String | Null = null val s4: String = s3.nn // throw NullPointerException |
|---|
Неявные преобразования
Источник
implicit def $conforms[A]: A => A
Неявное преобразование типа A => A доступно для всех A, потому что его всегда можно реализовать с помощью функции тождества. Это также означает, что неявное преобразование типа A => B всегда доступно, когда A <: B, потому что (A => A) <: (A => B).
Источник
Источник
Источник
Источник
Источник
Источник
Источник
Источник
Источник
Источник
Источник
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]
Источник
Унаследованные неявные преобразования
Источник
| Унаследовано от | LowPriorityImplicits (скрыто) |
|---|
Источник
В случае потенциальных конфликтов мы отдаем предпочтение упакованным типам java.lang.* этим обёрткам. Конфликты существуют, так как обёртки должны реализовывать ScalaNumber для симметричного метода equals, а это подразумевает реализацию java.lang.Number также.
Примечание - эти обёртки инлайнены, потому что они являются классами-значениями, но вызов xxxWrapper не удаляется, даже если он ничего не делает. Даже при инлайнинге каждый сайт вызова выполняет бездействующий запрос модуля Predef.MODULE$, так как возможно загрузка Predef имеет побочные эффекты!
| Унаследовано от | LowPriorityImplicits (скрыто) |
|---|
Источник
| Унаследовано от | LowPriorityImplicits (скрыто) |
|---|
Источник
| Унаследовано от | LowPriorityImplicits (скрыто) |
|---|
Источник
| Унаследовано от | LowPriorityImplicits (скрыто) |
|---|
Источник
| Унаследовано от | LowPriorityImplicits (скрыто) |
|---|
Источник
| Унаследовано от | LowPriorityImplicits (скрыто) |
|---|
Источник
| Унаследовано от | LowPriorityImplicits (скрыто) |
|---|
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/Predef$.html