Spec-Zone.ru › Scala 3.1

Класс scala.Option

Объект-компаньон • Исходный код

@SerialVersionUID(-114498752079829388L)
sealed abstract class Option[+A] extends IterableOnce[A] with Product with Serializable

Представляет необязательные значения. Экземпляры Option являются либо экземпляром scala.Some, либо объектом None.

Наиболее удобный способ использования экземпляра scala.Option — это рассматривать его как коллекцию или монаду и использовать map, flatMap, filter, или foreach:

val name: Option[String] = request getParameter "name"
val upper = name map { _.trim } filter { _.length != 0 } map { _.toUpperCase }
println(upper getOrElse "")

Обратите внимание, что это эквивалентно

val upper = for {
  name <- request getParameter "name"
  trimmed <- Some(name.trim)
  upper <- Some(trimmed.toUpperCase) if trimmed.length != 0
} yield upper
println(upper getOrElse "")

Из-за того, как работает понимание цикла for, если None возвращается из request.getParameter, всё выражение результатом будет None

Это позволяет создавать сложные цепочки значений scala.Option без необходимости проверки существования значения.

Вот полезные методы, которые существуют как для scala.Some, так и для None. - isDefined — True, если не пусто - isEmpty — True, если пусто - nonEmpty — True, если не пусто - orElse — Вычислить и вернуть альтернативное необязательное значение, если пусто - getOrElse — Вычислить и вернуть альтернативное значение, если пусто - get — Возвращает значение, бросает исключение, если пусто - fold — Применить функцию к необязательному значению, вернуть значение по умолчанию, если пусто - map — Применить функцию к необязательному значению - flatMap — То же, что и map, но функция должна возвращать необязательное значение - foreach — Применить процедуру к значению Option - collect — Применить частичное сопоставление шаблонов к необязательному значению - filter — Необязательное значение удовлетворяет предикату - filterNot — Необязательное значение не удовлетворяет предикату - exists — Применить предикат к необязательному значению или false, если пусто - forall — Применить предикат к необязательному значению или true, если пусто - contains — Проверяет, равно ли значение необязательному значению, или false, если пусто - zip — Объединяет два необязательных значения, чтобы получить парное необязательное значение - unzip — Разделяет пару необязательных значений на два необязательных значения - unzip3 — Разделяет тройку необязательных значений на три необязательных значения - toList — Одноэлементный список необязательного значения, в противном случае пустой список

Менее удобный способ использования значений scala.Option — через сопоставление шаблонов:

val nameMaybe = request getParameter "name"
nameMaybe match {
  case Some(name) =>
    println(name.trim.toUppercase)
  case None =>
    println("No name value")
}

Взаимодействие с кодом, который иногда может возвращать null, можно безопасно обернуть в scala.Option, чтобы получить None и scala.Some в противном случае.

val abc = new java.util.HashMap[Int, String]
abc.put(1, "A")
bMaybe = Option(abc.get(2))
bMaybe match {
 case Some(b) =>
   println(s"Found $b")
 case None =>
   println("Not found")
}
Примечание

Многие методы в этом разделе дублируют методы в иерархии Traversable, но они дублируются намеренно: неявное преобразование часто оставляет один с Iterable в ситуациях, когда можно было бы сохранить Option.

Супертипы
Тракт Serializable
Тракт Product
Тракт Equals
Тракт IterableOnce[A]
Класс Object
Тракт Matchable
Класс Any
Известные подтипы
Объект None.type
Класс Some[A]
Тип самого себя
Option[A]

Класс-подобные объекты

Исходный код
Класс WithFilter(p: A => Boolean)

Нам нужен целый класс WithFilter, чтобы сохранить контракт «не создает новую коллекцию», даже если это, кажется, мало что меняет в коллекции с максимальным размером 1.

Абстрактные методы

Исходный код
def get: A

Возвращает значение Option.

Это эквивалентно:

option match {
 case Some(x) => x
 case None    => throw new Exception
}
Бросает
NoSuchElementException

если Option пусто.

Примечание

Option должен быть непустым.

Конкретные методы

Исходный код@inline
final def collect[B](pf: PartialFunction[A, B]): Option[B]

Возвращает scala.Some, содержащую результат применения pf к содержимому этого scala.Option, если Option не пуст и pf определено для этого значения. Возвращает None в противном случае.

Параметры значения
pf

частичная функция.

Возвращает

результат применения pf к значению этого scala.Option (если возможно) или None.

Пример
// Returns Some(HTTP) because the partial function covers the case.
Some("http") collect {case "http" => "HTTP"}
// Returns None because the partial function doesn't cover the case.
Some("ftp") collect {case "http" => "HTTP"}
// Returns None because the option is empty. There is no value to pass to the partial function.
None collect {case value => value}

Исходный код
final def contains[A1 >: A](elem: A1): Boolean

Проверяет, содержит ли Option заданное значение в качестве элемента.

Это эквивалентно:

option match {
 case Some(x) => x == elem
 case None    => false
}
Параметры значения
elem

элемент для проверки.

Возвращает

true если Option имеет элемент, равный (как определено ==) elem, false в противном случае.

Пример
// Returns true because Some instance contains string "something" which equals "something".
Some("something") contains "something"
// Returns false because "something" != "anything".
Some("something") contains "anything"
// Returns false when method called on None.
None contains "anything"

Исходный код@inline
final def exists(p: A => Boolean): Boolean

Возвращает true, если этот Option не пуст, и предикат p возвращает true, когда применяется к значению этого scala.Option. В противном случае возвращает false.

Это эквивалентно:

option match {
 case Some(x) => p(x)
 case None    => false
}
Параметры значения
p

предикат для проверки

Исходный код@inline
final def filter(p: A => Boolean): Option[A]

Возвращает этот scala.Option, если он не пуст, и применение предиката p к значению этого scala.Option возвращает true. В противном случае вернуть None.

Это эквивалентно:

option match {
 case Some(x) if p(x) => Some(x)
 case _               => None
}
Параметры значения
p

предикат, используемый для проверки.

Исходный код@inline
final def filterNot(p: A => Boolean): Option[A]

Возвращает этот scala.Option, если он не пуст, и применение предиката p к значению этого scala.Option возвращает false. В противном случае вернуть None.

Это эквивалентно:

option match {
 case Some(x) if !p(x) => Some(x)
 case _                => None
}
Параметры значения
p

предикат, используемый для проверки.

Исходный код@inline
final def flatMap[B](f: A => Option[B]): Option[B]

Возвращает результат применения f к значению этого scala.Option, если этот scala.Option не пуст. Возвращает None если этот scala.Option пуст. Несколько отличается от map в том, что f ожидается, что вернёт scala.Option (который может быть None).

Это эквивалентно:

option match {
 case Some(x) => f(x)
 case None    => None
}
Параметры значения
f

функция для применения

См. также

map

foreach

Исходный код
def flatten[B](implicit ev: A <:< Option[B]): Option[B]

Возвращает вложенное значение scala.Option, если оно не пусто. В противном случае возвращает None.

Это эквивалентно:

option match {
 case Some(Some(b)) => Some(b)
 case _             => None
}
Параметры значения
ev

явное преобразование, которое утверждает, что значение также является scala.Option.

См. также

flatMap

Пример
Some(Some("something")).flatten

Исходный код@inline
final def fold[B](ifEmpty: => B)(f: A => B): B

Возвращает результат применения f к значению этого scala.Option, если scala.Option не пуст. В противном случае вычисляет выражение ifEmpty.

Это эквивалентно:

option match {
 case Some(x) => f(x)
 case None    => ifEmpty
}

Это также эквивалентно:

option map f getOrElse ifEmpty
Параметры значения
f

функция для применения, если значение не пустое.

ifEmpty

выражение для вычисления, если значение пустое.

Исходный код@inline
final def forall(p: A => Boolean): Boolean

Возвращает true, если этот параметр пустой или предикат p возвращает true, когда применяется к значению этого scala.Option.

Это эквивалентно:

option match {
 case Some(x) => p(x)
 case None    => true
}
Параметры значения
p

предикат для проверки

Исходный код@inline
final def foreach[U](f: A => U): Unit

Применяет заданную процедуру f к значению параметра, если оно не пустое. В противном случае ничего не делает.

Это эквивалентно:

option match {
 case Some(x) => f(x)
 case None    => ()
}
Параметры значения
f

процедура для применения.

См. также

map

flatMap

Исходный код@inline
final def getOrElse[B >: A](default: => B): B

Возвращает значение параметра, если параметр не пустой, в противном случае возвращает результат вычисления default.

Это эквивалентно:

option match {
 case Some(x) => x
 case None    => default
}
Параметры значения
default

выражение по умолчанию.

Исходный код
final def isDefined: Boolean

Возвращает true, если параметр является экземпляром scala.Some, в противном случае — false.

Это эквивалентно:

option match {
 case Some(_) => true
 case None    => false
}

Исходный код
final def isEmpty: Boolean

Возвращает true, если параметр None, в противном случае — false.

Это эквивалентно:

option match {
 case Some(_) => false
 case None    => true
}

Исходный код
def iterableFactory: IterableFactory[Iterable]

Неявно добавлено option2Iterable

Исходный код
def iterator: Iterator[A]

Возвращает одноэлементный итератор, возвращающий значение scala.Option, если оно не пустое, или пустой итератор, если параметр пустой.

Исходный код
final override def knownSize: Int

Классы определений IterableOnce

Исходный код
def lazyZip[B](that: Iterable[B]): LazyZip2[A, B, Iterable[A]]

Неявно добавлено option2Iterable

Аналогично zip, за исключением того, что элементы в каждой коллекции не потребляются до тех пор, пока над возвращённым LazyZip2 декоратором не выполняется строгое действие.

Вызовы lazyZip могут быть объединены для поддержки более высоких арностей (до 4) без накладных расходов на создание и декомпозицию промежуточных кортежей.

val xs = List(1, 2, 3)
val res = (xs lazyZip xs lazyZip xs lazyZip xs).map((a, b, c, d) => a + b + c + d)
// res == List(4, 8, 12)
Параметры типа
B

тип второго элемента в каждой возможной паре

Параметры значения
that

итерируемый объект, предоставляющий второй элемент каждой возможной пары

Возвращает

декоратор LazyZip2, который позволяет выполнять строгие операции над лениво вычисляемыми парами или цепочкой вызовов lazyZip. Также поддерживается неявное преобразование в Iterable[(A, B)].

Исходный код@inline
final def map[B](f: A => B): Option[B]

Возвращает scala.Some, содержащий результат применения f к значению этого scala.Option, если этот scala.Option не пустой. В противном случае возвращает None.

Это эквивалентно:

option match {
 case Some(x) => Some(f(x))
 case None    => None
}
Параметры значения
f

функция для применения

См. также

flatMap

foreach

Примечание

Это похоже на flatMap, за исключением того, что здесь f не нужно заключать результат в scala.Option.

Исходный код
final def nonEmpty: Boolean

Возвращает false, если параметр None, в противном случае — true.

Это эквивалентно:

option match {
 case Some(_) => true
 case None    => false
}
Примечание

Реализовано здесь для избежания неявного преобразования в Iterable.

Исходный код@inline
final def orElse[B >: A](alternative: => Option[B]): Option[B]

Возвращает этот scala.Option, если он не пустой, в противном случае возвращает результат вычисления alternative.

Это эквивалентно:

option match {
 case Some(x) => Some(x)
 case None    => alternative
}
Параметры значения
alternative

альтернативное выражение.

Исходный код@inline
final def orNull[A1 >: A](implicit ev: Null <:< A1): A1

Возвращает значение параметра, если он не пустой, или null , если он пустой.

Хотя использование null не рекомендуется, код, написанный для использования scala.Option, часто должен взаимодействовать с кодом, который ожидает и возвращает null.

Это эквивалентно:

option match {
 case Some(x) => x
 case None    => null
}
Пример
val initialText: Option[String] = getInitialText
val textField = new JComponent(initialText.orNull,20)

Исходный код@inline
final def toLeft[X](right: => X): Either[A, X]

Возвращает scala.util.Right, содержащий заданный аргумент right , если параметр пустой, или scala.util.Left, содержащий значение этого scala.Option, если этот scala.Option не пустой.

Это эквивалентно:

option match {
 case Some(x) => Left(x)
 case None    => Right(right)
}
Параметры значения
right

выражение для вычисления и возврата, если параметр пустой

См. также

toRight

Исходный код
def toList: List[A]

Возвращает одноэлементный список, содержащий значение scala.Option, если оно не пустое, или пустой список, если scala.Option пустой.

Это эквивалентно:

option match {
 case Some(x) => List(x)
 case None    => Nil
}

Source@inline
final def toRight[X](left: => X): Either[X, A]

Возвращает scala.util.Left, содержащий переданный аргумент left, если этот scala.Option пустой, или scala.util.Right, содержащий значение этого scala.Option, если он непустой.

Это эквивалентно:

option match {
 case Some(x) => Right(x)
 case None    => Left(left)
}
Параметры значения
left

выражение, которое должно быть вычислено и возвращено, если этот параметр пустой

См. также

toLeft

Source
final def unzip[A1, A2](implicit asPair: A <:< (A1, A2)): (Option[A1], Option[A2])

Преобразует Option пары в Option первого элемента и Option второго элемента.

Это эквивалентно:

option match {
  case Some((x, y)) => (Some(x), Some(y))
  case _            => (None,    None)
}
Параметры типа
A1

тип первой половины пары элементов

A2

тип второй половины пары элементов

Параметры значения
asPair

неявное преобразование, которое утверждает, что тип элемента этого Option является парой.

Возвращает

пара Option, содержащая, соответственно, первую и вторую половины пары элементов этого Option.

Source
final def unzip3[A1, A2, A3](implicit asTriple: A <:< (A1, A2, A3)): (Option[A1], Option[A2], Option[A3])

Преобразует Option тройки в три Option, каждый из которых содержит элемент из соответствующей позиции тройки.

Это эквивалентно:

option match {
  case Some((x, y, z)) => (Some(x), Some(y), Some(z))
  case _               => (None,    None,    None)
}
Параметры типа
A1

тип первого из трех элементов в тройке

A2

тип второго из трех элементов в тройке

A3

тип третьего из трех элементов в тройке

Параметры значения
asTriple

неявное преобразование, которое утверждает, что тип элемента этого Option является тройкой.

Возвращает

тройка Option, содержащая, соответственно, первый, второй и третий элементы из тройки элементов этого Option.

Source@inline
final def withFilter(p: A => Boolean): WithFilter

Необходим для предотвращения неявного преобразования scala.Option в scala.collection.Iterable в for выражениях.

Source
final def zip[A1 >: A, B](that: Option[B]): Option[(A1, B)]

Возвращает scala.Some, образованный из этого Option и другого Option путем объединения соответствующих элементов в пару. Если хотя бы один из двух Option пуст, возвращается None.

Это эквивалентно:

(option1, option2) match {
  case (Some(x), Some(y)) => Some((x, y))
  case _                  => None
}
Параметры значения
that

Option, который будет объединен с этим

Пример
// Returns Some(("foo", "bar")) because both options are nonempty.
Some("foo") zip Some("bar")
// Returns None because `that` option is empty.
Some("foo") zip None
// Returns None because `this` option is empty.
None zip Some("bar")

Наследованные методы

Source@inline
final def ++[B >: A](suffix: IterableOnce[B]): Iterable[B]

Неявно добавлен option2Iterable

Псевдоним для concat

Наследован из IterableOps

Source@inline
final def addString(b: StringBuilder): StringBuilder

Неявно добавлен option2Iterable

Добавляет все элементы этой коллекции в StringBuilder. Записанный текст состоит из строковых представлений (с помощью метода toString) всех элементов этой коллекции без разделителя.

Пример:

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = new StringBuilder()
b: StringBuilder =

scala> val h = a.addString(b)
h: StringBuilder = 1234
Параметры значения
b

StringBuilder, в который добавляются элементы.

Возвращает

StringBuilder b, в который были добавлены элементы.

Наследован из IterableOnceOps

Source@inline
final def addString(b: StringBuilder, sep: String): StringBuilder

Неявно добавлен option2Iterable

Добавляет все элементы этой коллекции в StringBuilder с использованием разделителя. Записанный текст состоит из строковых представлений (с помощью метода toString) всех элементов этой коллекции, разделенных строкой sep.

Пример:

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = new StringBuilder()
b: StringBuilder =

scala> a.addString(b, ", ")
res0: StringBuilder = 1, 2, 3, 4
Параметры значения
b

StringBuilder, в который добавляются элементы.

sep

строка-разделитель.

Возвращает

StringBuilder b, в который были добавлены элементы.

Наследован из IterableOnceOps

Source
def addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder

Неявно добавлен option2Iterable

Добавляет все элементы этой коллекции в StringBuilder с использованием начальной, конечной и разделительной строк. Записанный текст начинается со строки start и заканчивается строкой end. Между ними строковые представления (с помощью метода toString) всех элементов этой коллекции разделены строкой sep.

Пример:

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = new StringBuilder()
b: StringBuilder =

scala> a.addString(b , "List(" , ", " , ")")
res5: StringBuilder = List(1, 2, 3, 4)
Параметры значения
b

StringBuilder, в который добавляются элементы.

end

конечная строка.

sep

строка-разделитель.

start

начальная строка.

Возвращает

StringBuilder b, в который были добавлены элементы.

Наследован из IterableOnceOps

Source
def canEqual(that: Any): Boolean

Метод, который следует вызывать из каждого хорошо спроектированного метода equals, который может быть переопределён в подклассе. См. Programming in Scala, Глава 28 для обсуждения и проектирования.

Параметры значения
that

значение, которое проверяется на возможную равенство

Возвращает

true, если этот экземпляр может быть равен that, иначе false

Наследован из Equals

Source
def collect[B](pf: PartialFunction[A, B]): Iterable[B]

Неявно добавлен option2Iterable
Наследован из IterableOps

Source
def collectFirst[B](pf: PartialFunction[A, B]): Option[B]

Неявно добавлен option2Iterable

Находит первый элемент коллекции, для которого заданная частичная функция определена, и применяет частичную функцию к нему.

Примечание: может не завершаться для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Параметры значения
pf

частичная функция

Возвращает

значение опции, содержащей pf, применённое к первому значению, для которого оно определено, или None, если такового нет.

Пример

Seq("a", 1, 5L).collectFirst({ case x: Int => x*10 }) = Some(10)

Унаследовано от IterableOnceOps

Источник
def concat[B >: A](suffix: IterableOnce[B]): Iterable[B]

Неявным образом добавлено option2Iterable

Возвращает новую итерируемую коллекцию, содержащую элементы левого операнда, за которыми следуют элементы правого операнда. Тип элемента итерируемой коллекции — наиболее специфический суперкласс, охватывающий типы элементов двух операндов.

Параметры типа
B

тип элемента возвращаемой коллекции.

Параметры значения
suffix

итерируемый объект для добавления.

Возвращает

новая итерируемая коллекция, содержащая все элементы этой итерируемой коллекции, за которыми следуют все элементы suffix.

Унаследовано от IterableOps

Источник
def copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Int

Неявным образом добавлено option2Iterable

Копирует элементы в массив, возвращая количество скопированных элементов.

Заполняет заданный массив xs начиная с индекса start не более чем len элементами этой коллекции.

Копирование прекращается, как только скопированы все элементы этой коллекции, достигнут конец массива или скопировано len элементов.

Параметры типа
B

тип элементов массива.

Параметры значения
len

максимальное количество элементов для копирования.

start

начальный индекс xs.

xs

массив для заполнения.

Возвращает

количество элементов, записанных в массив

Примечание

Переиспользование: после вызова этого метода итерируемый объект, на котором он был вызван, следует удалить. Использование его в ином случае неопределено и может быть изменено.

Унаследовано от IterableOnceOps

Источник@deprecatedOverriding("Это всегда должно перенаправлять вызов на 3-аргументную версию этого метода", since = "2.13.4")
def copyToArray[B >: A](xs: Array[B], start: Int): Int

Неявным образом добавлено option2Iterable

Копирует элементы в массив, возвращая количество скопированных элементов.

Заполняет заданный массив xs начиная с индекса start значениями из этой коллекции.

Копирование прекращается, как только скопированы все элементы этой коллекции или достигнут конец массива.

Параметры типа
B

тип элементов массива.

Параметры значения
start

начальный индекс xs.

xs

массив для заполнения.

Возвращает

количество элементов, записанных в массив

Примечание

Переиспользование: после вызова этого метода итерируемый объект, на котором он был вызван, следует удалить. Использование его в ином случае неопределено и может быть изменено.

Унаследовано от IterableOnceOps

Источник@deprecatedOverriding("Это всегда должно перенаправлять вызов на 3-аргументную версию этого метода", since = "2.13.4")
def copyToArray[B >: A](xs: Array[B]): Int

Неявным образом добавлено option2Iterable

Копирует элементы в массив, возвращая количество скопированных элементов.

Заполняет заданный массив xs начиная с индекса start значениями из этой коллекции.

Копирование прекращается, как только скопированы все элементы этой коллекции или достигнут конец массива.

Параметры типа
B

тип элементов массива.

Параметры значения
xs

массив для заполнения.

Возвращает

количество элементов, записанных в массив

Примечание

Переиспользование: после вызова этого метода итерируемый объект, на котором он был вызван, следует удалить. Использование его в ином случае неопределено и может быть изменено.

Унаследовано от IterableOnceOps

Источник
def corresponds[B](that: IterableOnce[B])(p: (A, B) => Boolean): Boolean

Неявным образом добавлено option2Iterable

Проверяет, удовлетворяет ли каждый элемент итератора этой коллекции условию предиката для соответствующего элемента другой коллекции.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

тип элементов that

Параметры значения
p

предикат, связывающий элементы обеих коллекций

that

другая коллекция

Возвращает

true, если обе коллекции имеют одинаковую длину, и p(x, y) равен true для всех соответствующих элементов x итератора этой коллекции и y элементов that, в противном случае false

Унаследовано от IterableOnceOps

Источник
def count(p: A => Boolean): Int

Неявным образом добавлено option2Iterable

Подсчитывает количество элементов в коллекции, удовлетворяющих предикату.

Примечание: не завершится для коллекций бесконечного размера.

Параметры значения
p

предикат для проверки элементов.

Возвращает

количество элементов, удовлетворяющих предикату p.

Унаследовано от IterableOnceOps

Источник
def drop(n: Int): Iterable[A]

Неявным образом добавлено option2Iterable
Унаследовано от IterableOps

Источник
def dropRight(n: Int): Iterable[A]

Неявным образом добавлено option2Iterable

Выбирает все элементы, кроме последних n.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Параметры значения
n

количество элементов для удаления из этой итерируемой коллекции.

Возвращает

итерируемая коллекция, состоящая из всех элементов этой итерируемой коллекции, кроме последних n элементов, или пустая итерируемая коллекция, если в этой итерируемой коллекции меньше, чем n элементов. Если n отрицательное, элементы не удаляются.

Унаследовано от IterableOps

Source
def dropWhile(p: A => Boolean): Iterable[A]

Implicitly added by option2Iterable
Inherited from IterableOps

Source
def exists(p: A => Boolean): Boolean

Implicitly added by option2Iterable

Проверяет, выполняется ли предикат хотя бы для одного элемента в этом наборе.

Примечание: для наборов бесконечного размера может не завершиться.

Параметры
p

предикат, используемый для проверки элементов.

Возвращает

true если заданный предикат p выполняется хотя бы для одного элемента в этом наборе, в противном случае false

Inherited from IterableOnceOps

Source
def filter(pred: A => Boolean): Iterable[A]

Implicitly added by option2Iterable
Inherited from IterableOps

Source
def filterNot(pred: A => Boolean): Iterable[A]

Implicitly added by option2Iterable
Inherited from IterableOps

Source
def find(p: A => Boolean): Option[A]

Implicitly added by option2Iterable

Находит первый элемент в наборе, удовлетворяющий предикату, если такой существует.

Примечание: для наборов бесконечного размера может не завершиться.

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

Параметры
p

предикат, используемый для проверки элементов.

Возвращает

значение типа option, содержащее первый элемент в наборе, удовлетворяющий p, или None в случае отсутствия.

Inherited from IterableOnceOps

Source
def flatMap[B](f: A => IterableOnce[B]): Iterable[B]

Implicitly added by option2Iterable
Inherited from IterableOps

Source
def flatten[B](implicit asIterable: A => IterableOnce[B]): Iterable[B]

Implicitly added by option2Iterable
Inherited from IterableOps

Source
def fold[A1 >: A](z: A1)(op: (A1, A1) => A1): A1

Implicitly added by option2Iterable

Вычисляет свёртку элементов этого набора данных с использованием указанного ассоциативного бинарного оператора. Реализация по умолчанию в IterableOnce эквивалентна foldLeft, но может быть переопределена для более эффективного порядка обхода.

Порядок выполнения операций над элементами не определён и может быть недетерминированным.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
A1

параметр типа для бинарного оператора, являющийся супертипом A.

Параметры значения
op

бинарный оператор, который должен быть ассоциативным.

z

нейтральный элемент для операции свёртки; может быть добавлен к результату произвольное количество раз и не должен изменять результат (например, Nil для конкатенации списков, 0 для сложения или 1 для умножения).

Возвращает

результат применения оператора свёртки op между всеми элементами и z, или z если этот набор данных пуст.

Унаследовано от IterableOnceOps

Source
def foldLeft[B](z: B)(op: (B, A) => B): B

Implicitly added by option2Iterable

Применяет бинарный оператор к начальному значению и всем элементам этого набора данных слева направо.

Примечание: не завершится для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базового набора данных не упорядочен или оператор не ассоциативен и коммутативен.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

z

начальное значение.

Возвращает

результат вставки op между последовательными элементами этого набора данных слева направо с начальным значением z слева: op(...op(z, x1), x2, ..., xn), где x1, ..., xn — это элементы этого набора данных. Возвращает z если этот набор данных пуст.

Унаследовано от IterableOnceOps

Source
def foldRight[B](z: B)(op: (A, B) => B): B

Implicitly added by option2Iterable

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

Примечание: не завершится для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базового набора данных не упорядочен или оператор не ассоциативен и коммутативен.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

z

начальное значение.

Возвращает

результат вставки op между последовательными элементами этого набора данных справа налево с начальным значением z справа: op(x1, op(x2, ... op(xn, z)...)), где x1, ..., xn — это элементы этого набора данных. Возвращает z если этот набор данных пуст.

Унаследовано от IterableOnceOps

Source
def forall(p: A => Boolean): Boolean

Implicitly added by option2Iterable

Проверяет, выполняется ли предикат для всех элементов этого набора данных.

Примечание: может не завершиться для коллекций бесконечного размера.

Параметры значения
p

предикат, используемый для проверки элементов.

Возвращает

true если этот набор данных пуст или указанный предикат p выполняется для всех элементов этого набора данных, в противном случае false.

Унаследовано от IterableOnceOps

Source
def foreach[U](f: A => U): Unit

Implicitly added by option2Iterable

Применяет f к каждому элементу для побочных эффектов. Примечание: параметр [U] необходим для помощи в процессе вывода типов scalac.

Наследуется от IterableOnceOps

Источник
protected def fromSpecific(coll: IterableOnce[A]): Iterable[A]

Неявно добавлено option2Iterable
Наследуется от IterableFactoryDefaults

Источник
def groupBy[K](f: A => K): Map[K, Iterable[A]]

Неявно добавлено option2Iterable

Разделяет эту итерируемую коллекцию на карту итерируемых коллекций в соответствии с некоторой функцией-дискриминатором.

Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.

Параметры типа
K

тип ключей, возвращаемых функцией-дискриминатором.

Параметры значения
f

функция-дискриминатор.

Возвращает

Карта, сопоставляющая ключи итерируемым коллекциям, для которой выполняется следующее инвариантное свойство:

(xs groupBy f)(k) = xs filter (x => f(x) == k)

То есть каждый ключ k сопоставлен с итерируемой коллекцией тех элементов x для которых f(x) равно k.

Наследуется от IterableOps

Источник
def groupMap[K, B](key: A => K)(f: A => B): Map[K, Iterable[B]]

Неявно добавлено option2Iterable

Разделяет эту итерируемую коллекцию на карту итерируемых коллекций в соответствии с функцией-дискриминатором key. Каждый элемент в группе преобразуется в значение типа B с помощью функции value.

Это эквивалентно groupBy(key).mapValues(_.map(f)), но более эффективно.

case class User(name: String, age: Int)

def namesByAge(users: Seq[User]): Map[Int, Seq[String]] =
  users.groupMap(_.age)(_.name)

Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.

Параметры типа
B

тип значений, возвращаемых функцией преобразования

K

тип ключей, возвращаемых функцией-дискриминатором

Параметры значения
f

функция преобразования элементов

key

функция-дискриминатор

Наследуется от IterableOps

Источник
def groupMapReduce[K, B](key: A => K)(f: A => B)(reduce: (B, B) => B): Map[K, B]

Неявно добавлено option2Iterable

Разделяет эту итерируемую коллекцию на карту в соответствии с функцией-дискриминатором key. Все значения, имеющие одинаковый дискриминатор, затем преобразуются функцией f и затем сводятся к единственному значению с помощью функции reduce.

Это эквивалентно groupBy(key).mapValues(_.map(f).reduce(reduce)), но более эффективно.

def occurrences[A](as: Seq[A]): Map[A, Int] =
  as.groupMapReduce(identity)(_ => 1)(_ + _)

Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.

Наследуется от IterableOps

Источник
def grouped(size: Int): Iterator[Iterable[A]]

Неявно добавлено option2Iterable

Разделяет элементы на итерируемые коллекции фиксированного размера.

Параметры значения
size

количество элементов в группе

Возвращает

Итератор, генерирующий итерируемые коллекции размером size, за исключением последней, которая будет меньше size size, если элементы не делятся на размер группы без остатка.

См. также

scala.collection.Iterator, метод grouped

Наследуется от IterableOps

Источник
def head: A

Неявно добавлено option2Iterable

Выбирает первый элемент этой итерируемой коллекции.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Возвращает

первый элемент этой итерируемой коллекции.

Исключения
NoSuchElementException

если итерируемая коллекция пустая.

Наследуется от IterableOps

Источник
def headOption: Option[A]

Неявно добавлено option2Iterable

Возвращает первый элемент, если он есть, или None, если коллекция пуста.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Возвращает

первый элемент этой итерируемой коллекции, если она не пуста; None, если она пуста.

Наследуется от IterableOps

Источник
def init: Iterable[A]

Неявно добавлено option2Iterable

Часть коллекции без последнего элемента.

Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.

Наследуется от IterableOps

Источник
def inits: Iterator[Iterable[A]]

Неявно добавлено option2Iterable

Итерируется по начальным частям этой итерируемой коллекции. Первое значение будет этой итерируемой коллекцией, а последнее — пустой итерируемой коллекцией, а промежуточные значения — результаты последовательных применений init.

Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.

Возвращает

итератор по всем начальным частям этой итерируемой коллекции

Пример

List(1,2,3).inits = Iterator(List(1,2,3), List(1,2), List(1), Nil)

Наследуется от IterableOps

Источник
def isEmpty: Boolean

Неявно добавлено option2Iterable

Проверяет, пуста ли коллекция.

Примечание: реализации в подклассах, которые не являются многократно итерируемыми, должны позаботиться о том, чтобы не потреблять какие-либо элементы, когда isEmpty вызывается.

Возвращает

true, если коллекция не содержит элементов, false в противном случае.

Наследуется от IterableOnceOps

Источник
def iterator: Iterator[A]

Неявно добавлено option2Iterable

Итератор может быть использован только один раз

Наследуется от IterableOnce

Источник
def knownSize: Int

Неявно добавлено option2Iterable
Возвращает

Количество элементов в этом наборе, если его можно вычислить без затрат, в противном случае -1. Без затрат обычно означает: Не требует обхода набора.

Унаследовано от IterableOnce

Исходный код
def last: A

Неявно добавлено option2Iterable

Выбирает последний элемент.

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

Возвращает

Последний элемент этого итерируемого набора.

Выбрасывает
NoSuchElementException

Если итерируемый набор пуст.

Унаследовано от IterableOps

Исходный код
def lastOption: Option[A]

Неявно добавлено option2Iterable

Возвращает последний элемент в виде Option.

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

Возвращает

последний элемент этого итерируемого набора$ , если он не пуст, None , если он пуст.

Унаследовано от IterableOps

Исходный код
def map[B](f: A => B): Iterable[B]

Неявно добавлено option2Iterable
Унаследовано от IterableOps

Исходный код
def max[B >: A](implicit ord: Ordering[B]): A

Неявно добавлено option2Iterable

Находит наибольший элемент.

Примечание: не завершит работу для бесконечных наборов.

Параметры типа
B

Тип, по которому определено упорядочение.

Параметры значения
ord

Упорядочение для сравнения элементов.

Возвращает

наибольший элемент этого набора относительно упорядочения ord.

Выбрасывает
UnsupportedOperationException

если этот набор пуст.

Унаследовано от IterableOnceOps

Исходный код
def maxBy[B](f: A => B)(implicit cmp: Ordering[B]): A

Неявно добавлено option2Iterable

Находит первый элемент, который дает наибольшее значение, измеренное функцией f.

Примечание: не завершит работу для бесконечных наборов.

Параметры типа
B

Тип результата функции f.

Параметры значения
cmp

Упорядочение для сравнения элементов.

f

Функция измерения.

Возвращает

первый элемент этого набора с наибольшим значением, измеренным функцией f, относительно упорядочения cmp.

Выбрасывает
UnsupportedOperationException

если этот набор пуст.

Унаследовано от IterableOnceOps

Исходный код
def maxByOption[B](f: A => B)(implicit cmp: Ordering[B]): Option[A]

Неявным образом добавлено option2Iterable

Находит первый элемент, который даёт наибольшее значение, измеренное функцией f.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип результата функции f.

Параметры значения
cmp

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

f

Функция измерения.

Возвращает

значение типа Option, содержащее первый элемент этой коллекции с наибольшим значением, измеренным функцией f относительно порядка cmp.

Унаследовано от IterableOnceOps

Источник
def maxOption[B >: A](implicit ord: Ordering[B]): Option[A]

Неявным образом добавлено option2Iterable

Находит наибольший элемент.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определяется порядок.

Параметры значения
ord

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

Возвращает

значение типа Option, содержащее наибольший элемент этой коллекции относительно порядка ord.

Унаследовано от IterableOnceOps

Источник
def min[B >: A](implicit ord: Ordering[B]): A

Неявным образом добавлено option2Iterable

Находит наименьший элемент.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определяется порядок.

Параметры значения
ord

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

Возвращает

наименьший элемент этой коллекции относительно порядка ord.

Исключения
UnsupportedOperationException

если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def minBy[B](f: A => B)(implicit cmp: Ordering[B]): A

Неявным образом добавлено option2Iterable

Находит первый элемент, который даёт наименьшее значение, измеренное функцией f.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип результата функции f.

Параметры значения
cmp

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

f

Функция измерения.

Возвращает

первый элемент этой коллекции с наименьшим значением, измеренным функцией f относительно порядка cmp.

Исключения
UnsupportedOperationException

если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def minByOption[B](f: A => B)(implicit cmp: Ordering[B]): Option[A]

Неявным образом добавлено option2Iterable

Находит первый элемент, который даёт наименьшее значение, измеренное функцией f.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип результата функции f.

Параметры значения
cmp

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

f

Функция измерения.

Возвращает

значение типа Option, содержащее первый элемент этой коллекции с наименьшим значением, измеренным функцией f относительно порядка cmp.

Унаследовано от IterableOnceOps
END_OF_DOCUMENT_MARKER

Source
def minOption[B >: A](implicit ord: Ordering[B]): Option[A]

Implicitly added by option2Iterable

Находит наименьший элемент.

Примечание: не будет завершаться для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определено упорядочение.

Параметры значения
ord

Упорядочение, используемое для сравнения элементов.

Возвращает

значение option, содержащее наименьший элемент этой коллекции по отношению к упорядочению ord.

Унаследовано от IterableOnceOps

Source@inline
final def mkString: String

Implicitly added by option2Iterable

Отображает все элементы этой коллекции в строке.

Делегирует addString, который можно переопределить.

Возвращает

строковое представление этой коллекции. В результирующей строке строковые представления (в соответствии с методом toString) всех элементов этой коллекции следуют друг за другом без разделителя.

Унаследовано от IterableOnceOps

Source@inline
final def mkString(sep: String): String

Implicitly added by option2Iterable

Отображает все элементы этой коллекции в строке с использованием разделителя.

Делегирует addString, который можно переопределить.

Параметры значения
sep

строка-разделитель.

Возвращает

строковое представление этой коллекции. В результирующей строке строковые представления (в соответствии с методом toString) всех элементов этой коллекции разделены строкой sep.

Пример

List(1, 2, 3).mkString("|") = "1|2|3"

Унаследовано от IterableOnceOps

Source
final def mkString(start: String, sep: String, end: String): String

Implicitly added by option2Iterable

Отображает все элементы этой коллекции в строке с использованием начальной, конечной и разделительных строк.

Делегирует addString, который можно переопределить.

Параметры значения
end

конечная строка.

sep

строка-разделитель.

start

начальная строка.

Возвращает

строковое представление этой коллекции. Результирующая строка начинается со строки start и заканчивается строкой end. Внутри строковые представления (в соответствии с методом toString) всех элементов этой коллекции разделены строкой sep.

Пример

List(1, 2, 3).mkString("(", "; ", ")") = "(1; 2; 3)"

Унаследовано от IterableOnceOps

Source
protected def newSpecificBuilder: Builder[A, Iterable[A]]

Implicitly added by option2Iterable
Унаследовано от IterableFactoryDefaults

Source@deprecatedOverriding("nonEmpty is defined as !isEmpty; override isEmpty instead", "2.13.0")
def nonEmpty: Boolean

Implicitly added by option2Iterable

Проверяет, не пуста ли коллекция.

Возвращает

true если коллекция содержит хотя бы один элемент, false в противном случае.

Унаследовано от IterableOnceOps

Source
def partition(p: A => Boolean): (Iterable[A], Iterable[A])

Implicitly added by option2Iterable

Пара, состоящая из элементов, удовлетворяющих предикату p, и элементов, которые не удовлетворяют. Интересно, потому что она разделяет коллекцию на две части.

Реализация по умолчанию, предоставленная здесь, должна дважды пройтись по коллекции. Строгие коллекции имеют переопределенную версию partition в StrictOptimizedIterableOps, которая требует только одного прохода.

Унаследовано от IterableOps

Source
def partitionMap[A1, A2](f: A => Either[A1, A2]): (Iterable[A1], Iterable[A2])

Implicitly added by option2Iterable

Применяет функцию f к каждому элементу коллекции и возвращает пару коллекций: первая содержит значения, возвращенные функцией f, которые были обернуты в scala.util.Left, а вторая — значения, обернутые в scala.util.Right.

Пример:

val xs = Iterable(1, "one", 2, "two", 3, "three") partitionMap {
 case i: Int => Left(i)
 case s: String => Right(s)
}
// xs == (Iterable(1, 2, 3),
//        Iterable(one, two, three))
Параметры типа
A1

тип элементов первой результирующей коллекции

A2

тип элементов второй результирующей коллекции

Параметры значения
f

функция «разделения», отображающая элементы этой коллекции в scala.util.Either

Возвращает

пару коллекций: первая содержит те значения, возвращенные функцией f и обернутые в scala.util.Left, а вторая — значения, обернутые в scala.util.Right.

Унаследовано от IterableOps

Source
def product[B >: A](implicit num: Numeric[B]): B

Implicitly added by option2Iterable

Перемножает элементы этой коллекции.

Примечание: не будет завершаться для коллекций бесконечного размера.

Параметры типа
B

тип результата оператора *.

Параметры значения
num

явный параметр, определяющий набор числовых операций, включающий оператор * для вычисления произведения.

Возвращает

произведение всех элементов этой коллекции относительно оператора * в num.

Унаследовано от IterableOnceOps

Source
def productArity: Int

Размер этого произведения.

Возвращает

для произведения A(x1, ..., xk), возвращает k

Унаследовано от Product

Source
def productElement(n: Int): Any

n-ый элемент этого произведения, нумерация с 0. Другими словами, для произведения A(x1, ..., xk), возвращает x(n+1), где 0 <= n < k.

Параметры значения
n

индекс элемента, который нужно вернуть

Возвращает

элемент n элементов после первого элемента

Исключение
IndexOutOfBoundsException

если n выходит за пределы диапазона (n < 0 || n >= productArity).

Унаследовано от Product

Исходный код
def productElementName(n: Int): String

Имя n-го элемента этого произведения, нумерация с 0. В стандартной реализации — пустая строка.

Параметры значения
n

индекс имени элемента, который нужно вернуть

Возвращает

имя указанного элемента

Исключение
IndexOutOfBoundsException

если n выходит за пределы диапазона (n < 0 || n >= productArity).

Унаследовано от Product

Исходный код
def productElementNames: Iterator[String]

Итератор по именам всех элементов этого произведения.

Унаследовано от Product

Исходный код
def productIterator: Iterator[Any]

Итератор по всем элементам этого произведения.

Возвращает

в стандартной реализации, Iterator[Any]

Унаследовано от Product

Исходный код
def productPrefix: String

Строка, используемая в методах toString производных классов. Реализации могут переопределять этот метод, чтобы добавить строковый префикс к результату методов toString.

Возвращает

в стандартной реализации, пустая строка

Унаследовано от Product

Исходный код
def reduce[B >: A](op: (B, B) => B): B

Неявное добавление option2Iterable

Применяет заданный ассоциативный бинарный оператор к элементам этой коллекции.

Порядок операций над элементами не определен и может быть не детерминированным.

Параметры типа
B

Параметр типа для бинарного оператора, являющийся супертипом A.

Параметры значения
op

Бинарный оператор, который должен быть ассоциативным.

Возвращает

Результат применения оператора reduce op между всеми элементами, если коллекция не пустая.

Исключение
UnsupportedOperationException

если коллекция пустая.

Унаследовано от IterableOnceOps

Исходный код
def reduceLeft[B >: A](op: (B, A) => B): B

Неявное добавление option2Iterable

Применяет бинарный оператор ко всем элементам этой коллекции слева направо.

Примечание: не завершится для коллекций бесконечного размера.

Примечание: может возвращать разные результаты при разных запусках, если тип коллекции не упорядочен, или оператор не является ассоциативным и коммутативным.

Тип параметров
B

тип результата бинарного оператора.

Параметры значений
op

бинарный оператор.

Возвращает

результат вставки op между последовательными элементами этого набора, слева направо: op( op( ... op(x1, x2) ..., xn-1), xn) где x1, ..., xn — это элементы этого набора.

Выбрасывает
UnsupportedOperationException

если этот набор пуст.

Унаследовано от IterableOnceOps

Источник
def reduceLeftOption[B >: A](op: (B, A) => B): Option[B]

Неявное добавление по option2Iterable

Применяет бинарный оператор ко всем элементам этого набора слева направо (последовательно).

Примечание: не завершится для наборов бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен или оператор не ассоциативен и коммутативен.

Тип параметров
B

тип результата бинарного оператора.

Параметры значений
op

бинарный оператор.

Возвращает

значение option, содержащее результат reduceLeft(op) если этот набор не пустой, None в противном случае.

Унаследовано от IterableOnceOps

Источник
def reduceOption[B >: A](op: (B, B) => B): Option[B]

Неявное добавление по option2Iterable

Сводит элементы этого набора, если они есть, с помощью указанного ассоциативного бинарного оператора.

Порядок выполнения операций над элементами не определен и может быть не детерминированным.

Тип параметров
B

Тип параметра для бинарного оператора, являющийся надтипом A.

Параметры значений
op

Бинарный оператор, который должен быть ассоциативным.

Возвращает

Значение option, содержащее результат применения оператора reduce op между всеми элементами, если набор не пуст, и None в противном случае.

Унаследовано от IterableOnceOps

Источник
def reduceRight[B >: A](op: (A, B) => B): B

Неявное добавление по option2Iterable

Применяет бинарный оператор ко всем элементам этого набора, справа налево.

Примечание: не завершится для наборов бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен или оператор не ассоциативен и коммутативен.

Тип параметров
B

тип результата бинарного оператора.

Параметры значений
op

бинарный оператор.

Возвращает

результат вставки op между последовательными элементами этого набора, справа налево: op(x1, op(x2, ..., op(xn-1, xn)...)) где x1, ..., xn — это элементы этого набора.

Выбрасывает
UnsupportedOperationException

если этот набор пуст.

Унаследовано от IterableOnceOps

Источник
def reduceRightOption[B >: A](op: (A, B) => B): Option[B]

Неявное добавление по option2Iterable

Возвращает значение option для применения бинарного оператора к элементам этого набора, справа налево.

Примечание: не завершится для наборов бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен или оператор не ассоциативен и коммутативен.

Параметры типа
B

тип результата бинарной операции.

Параметры значения
op

бинарная операция.

Возвращает

значение типа Option, содержащее результат reduceRight(op), если коллекция не пуста, None в противном случае.

Унаследовано от IterableOnceOps

Источник
protected def reversed: Iterable[A]

Неявно добавлено option2Iterable
Унаследовано от IterableOnceOps

Источник
def scan[B >: A](z: B)(op: (B, B) => B): Iterable[B]

Неявно добавлено option2Iterable

Вычисляет префиксную сумму элементов коллекции.

Примечание: Нейтральный элемент z может быть применен более одного раза.

Параметры типа
B

тип элементов результирующей коллекции

Параметры значения
op

ассоциативная операция для сканирования

z

нейтральный элемент для операции op

Возвращает

новая коллекция типа Iterable, содержащая префиксную сумму элементов в этой коллекции

Унаследовано от IterableOps

Источник
def scanLeft[B](z: B)(op: (B, A) => B): Iterable[B]

Неявно добавлено option2Iterable
Унаследовано от IterableOps

Источник
def scanRight[B](z: B)(op: (A, B) => B): Iterable[B]

Неявно добавлено option2Iterable

Создаёт коллекцию, содержащую кумулятивные результаты применения оператора справа налево. Голова коллекции — это последний кумулятивный результат.

Примечание: не завершится для коллекций бесконечной длины.

Примечание: может возвращать разные результаты при разных запусках, если только тип базовой коллекции не является упорядоченным.

Примечание: даже при применении к просмотру или ленивой коллекции всегда будет принудительно вычислять элементы.

Пример:

List(1, 2, 3, 4).scanRight(0)(_ + _) == List(10, 9, 7, 4, 0)
Параметры типа
B

тип элементов в результирующей коллекции

Параметры значения
op

бинарная операция, применяемая к промежуточному результату и элементу

z

начальное значение

Возвращает

коллекция с промежуточными результатами

Унаследовано от IterableOps

Источник
def size: Int

Неявно добавлено option2Iterable

Размер этой коллекции.

Примечание: не завершится для коллекций бесконечной длины.

Возвращает

количество элементов в этой коллекции.

Унаследовано от IterableOnceOps

Источник
def sizeCompare(that: Iterable[_]): Int

Неявно добавлено option2Iterable

Сравнивает размер этой коллекции с размером другой Iterable.

Параметры значения
that

Iterable, размер которой сравнивается с размером этой коллекции.

Возвращает

Значение x, где

x <  0       if this.size <  that.size
x == 0       if this.size == that.size
x >  0       if this.size >  that.size

Метод, как он реализован здесь, не вызывает size напрямую; его время выполнения — O(this.size min that.size), а не O(this.size + that.size). Метод следует переопределять, если вычисление size является быстрым, и knownSize возвращает -1.

Унаследовано от IterableOps

Источник
def sizeCompare(otherSize: Int): Int

Неявно добавлено option2Iterable

Сравнивает размер этой коллекции с тестовым значением.

Параметры значения
otherSize

тестовое значение, которое сравнивается с размером.

Возвращает

Значение x, где

x <  0       if this.size <  otherSize
x == 0       if this.size == otherSize
x >  0       if this.size >  otherSize

Метод, как он реализован здесь, не вызывает size напрямую; его время выполнения — O(size min otherSize), а не O(size). Метод следует переопределять, если вычисление size является быстрым, и knownSize возвращает -1.

См. также

sizeIs

Унаследовано от IterableOps

Источник@inline
final def sizeIs: SizeCompareOps

Неявно добавлено option2Iterable

Возвращает значение класса, содержащее операции для сравнения размера этой коллекции с тестовым значением.

Эти операции реализованы с помощью sizeCompare(Int) и позволяют использовать более удобочитаемые выражения:

this.sizeIs < size     // this.sizeCompare(size) < 0
this.sizeIs <= size    // this.sizeCompare(size) <= 0
this.sizeIs == size    // this.sizeCompare(size) == 0
this.sizeIs != size    // this.sizeCompare(size) != 0
this.sizeIs >= size    // this.sizeCompare(size) >= 0
this.sizeIs > size     // this.sizeCompare(size) > 0
Унаследовано от IterableOps

Источник
def slice(from: Int, until: Int): Iterable[A]

Неявно добавлено option2Iterable
Унаследовано от IterableOps

Источник
def sliding(size: Int, step: Int): Iterator[Iterable[A]]

Неявно добавлено option2Iterable

Группирует элементы в блоки фиксированного размера, перемещая "скользящее окно" по ним (в отличие от их разбиения, как в grouped.)

Возвращаемый итератор будет пустым при вызове на пустой коллекции. Последний элемент, который производит итератор, может быть меньше размера окна, если исходная коллекция не исчерпана окном до исчерпания, а её последний элемент не пропущен шагом перед ним.

Параметры значения
size

количество элементов в группе

step

расстояние между первыми элементами последовательных групп

Возвращает

Итератор, генерирующий итерируемые коллекции размером size, за исключением последнего элемента (который может быть единственным), который будет меньше, если оставшихся элементов для группирования меньше size.

См. также

scala.collection.Iterator, метод sliding

Пример

List(1, 2, 3, 4, 5).sliding(2, 2) = Iterator(List(1, 2), List(3, 4), List(5))

List(1, 2, 3, 4, 5, 6).sliding(2, 3) = Iterator(List(1, 2), List(4, 5))

Унаследовано от IterableOps

Источник
def sliding(size: Int): Iterator[Iterable[A]]

Неявно добавлено option2Iterable

Группирует элементы в блоки фиксированного размера, пропуская «скользящее окно» по ним (в отличие от разбиения, как это делается в grouped.)

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

Параметры значения
size

количество элементов в группе

Возвращает

Итератор, генерирующий итерируемые наборы размера size, за исключением непустого набора с количеством элементов меньше size, который возвращает итератор, генерирующий исходный набор в качестве единственного элемента.

См. также

scala.collection.Iterator, метод sliding

Пример

List().sliding(2) = empty iterator

List(1).sliding(2) = Iterator(List(1))

List(1, 2).sliding(2) = Iterator(List(1, 2))

List(1, 2, 3).sliding(2) = Iterator(List(1, 2), List(2, 3))

Унаследовано от IterableOps

Источник
def span(p: A => Boolean): (Iterable[A], Iterable[A])

Неявно добавлен option2Iterable
Унаследовано от IterableOps

Источник
def stepper[S <: Stepper[_]](implicit shape: StepperShape[A, S]): S

Неявно добавлен option2Iterable

Возвращает scala.collection.Stepper для элементов этого набора.

Stepper позволяет создавать поток Java для работы с набором, см. scala.jdk.StreamConverters. Для наборов, содержащих примитивные значения, Stepper может использоваться как итератор, который не упаковывает элементы.

Неявный параметр scala.collection.StepperShape определяет тип возвращаемого Stepper в соответствии с типом элемента этого набора.

  • Для наборов, содержащих Int, Short, Byte или Char, возвращается scala.collection.IntStepper

  • Для наборов, содержащих Double или Float, возвращается scala.collection.DoubleStepper

  • Для наборов, содержащих Long, возвращается scala.collection.LongStepper

  • Для любого другого типа элементов возвращается scala.collection.AnyStepper

Обратите внимание, что этот метод переопределен в подклассах, и тип возвращаемого значения уточняется до S with EfficientSplit, например, scala.collection.IndexedSeqOps.stepper. Для Steppers, помеченных scala.collection.Stepper.EfficientSplit, преобразователи в scala.jdk.StreamConverters позволяют создавать параллельные потоки, тогда как обычные Steppers могут преобразовываться только в последовательные потоки.

Унаследовано от IterableOnce

Источник
def stepper[S <: Stepper[_]](implicit shape: StepperShape[A, S]): S

Возвращает scala.collection.Stepper для элементов этого набора.

Stepper позволяет создавать поток Java для работы с набором, см. scala.jdk.StreamConverters. Для наборов, содержащих примитивные значения, Stepper может использоваться как итератор, который не упаковывает элементы.

Неявный параметр scala.collection.StepperShape определяет тип возвращаемого Stepper в соответствии с типом элемента этого набора.

  • Для наборов, содержащих Int, Short, Byte или Char, возвращается scala.collection.IntStepper

  • Для наборов, содержащих Double или Float, возвращается scala.collection.DoubleStepper

  • Для наборов, содержащих Long, возвращается scala.collection.LongStepper

  • Для любого другого типа элементов возвращается scala.collection.AnyStepper

Обратите внимание, что этот метод переопределен в подклассах, и тип возвращаемого значения уточняется до S with EfficientSplit, например, scala.collection.IndexedSeqOps.stepper. Для Steppers, помеченных scala.collection.Stepper.EfficientSplit, преобразователи в scala.jdk.StreamConverters позволяют создавать параллельные потоки, тогда как обычные Steppers могут преобразовываться только в последовательные потоки.

Унаследовано от IterableOnce

Источник
def sum[B >: A](implicit num: Numeric[B]): B

Неявно добавлен option2Iterable

Суммирует элементы этого набора.

Примечание: не будет завершаться для наборов бесконечного размера.

Параметры типа
B

тип результата оператора +.

Параметры значения
num

неявный параметр, определяющий набор арифметических операций, включающий оператор + для использования при формировании суммы.

Возвращает

сумма всех элементов этого набора относительно оператора + в num.

Унаследовано от IterableOnceOps

Источник
def tail: Iterable[A]

Неявно добавлен option2Iterable

Остальная часть набора без первого элемента.

Унаследовано от IterableOps

Источник
def tails: Iterator[Iterable[A]]

Неявно добавлен option2Iterable

Итерируется по хвостам этого итерируемого набора. Первое значение будет этим итерируемым набором, а последнее — пустым итерируемым набором, а промежуточные значения будут результатом последовательных применений tail.

Возвращает

итератор по всем хвостам этого итерируемого набора

Пример

List(1,2,3).tails = Iterator(List(1,2,3), List(2,3), List(3), Nil)

Унаследовано от IterableOps

Источник
def take(n: Int): Iterable[A]

Неявно добавлен option2Iterable
Унаследовано от IterableOps

Источник
def takeRight(n: Int): Iterable[A]

Неявно добавлен option2Iterable

Выбирает последние n элементов.

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

Параметры значения
n

количество элементов для извлечения из этого итерируемого набора.

Возвращает

итерируемый набор, содержащий только последние n элементы этого итерируемого набора, или весь итерируемый набор, если в нём меньше n элементов. Если n отрицательное, возвращает пустой итерируемый набор.

Унаследовано от IterableOps

Источник
def takeWhile(p: A => Boolean): Iterable[A]

Неявно добавлен option2Iterable

Извлекает самый длинный префикс элементов, удовлетворяющих предикату.

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

Параметры значения
p

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

Возвращает

наибольший префикс этого итерируемого набора элементов, все из которых удовлетворяют предикату p.

Унаследовано от IterableOps

Источник
def to[C1](factory: Factory[A, C1]): C1

Неявным образом добавлено option2Iterable

При заданном фабрике наборов factory, преобразовать этот набор в соответствующее представление для текущего типа элемента A. Примеры использования:

xs.to(List) xs.to(ArrayBuffer) xs.to(BitSet) // для xs: Iterable[Int]

Унаследовано от IterableOnceOps

Источник
def toArray[B >: A : ClassTag]: Array[B]

Неявным образом добавлено option2Iterable

Преобразовать набор в массив.

Примечание к реализации: НЕ вызывать Array.from из этого метода.

Унаследовано от IterableOnceOps

Источник@inline
final def toBuffer[B >: A]: Buffer[B]

Неявным образом добавлено option2Iterable
Унаследовано от IterableOnceOps

Источник
def toIndexedSeq: IndexedSeq[A]

Неявным образом добавлено option2Iterable
Унаследовано от IterableOnceOps

Источник
def toList: List[A]

Неявным образом добавлено option2Iterable
Унаследовано от IterableOnceOps

Источник
def toMap[K, V](implicit ev: A <:< (K, V)): Map[K, V]

Неявным образом добавлено option2Iterable
Унаследовано от IterableOnceOps

Источник
def toSeq: Seq[A]

Неявным образом добавлено option2Iterable
Возвращает

Этот набор в виде Seq[A]. Это эквивалентно to(Seq) , но может быть быстрее.

Унаследовано от IterableOnceOps

Источник
def toSet[B >: A]: Set[B]

Неявным образом добавлено option2Iterable
Унаследовано от IterableOnceOps

Источник
def toVector: Vector[A]

Неявным образом добавлено option2Iterable
Унаследовано от IterableOnceOps

Источник
def transpose[B](implicit asIterable: A => Iterable[B]): Iterable[Iterable[B]]

Неявным образом добавлено option2Iterable

Транспонирует этот итерируемый набор итерируемых наборов в итерируемый набор итерируемых наборов.

Тип результирующего набора будет определяться статическим типом итерируемого набора. Например:

val xs = List(
           Set(1, 2, 3),
           Set(4, 5, 6)).transpose
// xs == List(
//         List(1, 4),
//         List(2, 5),
//         List(3, 6))

val ys = Vector(
           List(1, 2, 3),
           List(4, 5, 6)).transpose
// ys == Vector(
//         Vector(1, 4),
//         Vector(2, 5),
//         Vector(3, 6))

Примечание: Даже при применении к представлению или ленивому набору, элементы будут всегда форсироваться.

Параметры типа
B

тип элементов каждого итерируемого набора.

Параметры значения
asIterable

неявное преобразование, которое утверждает, что тип элементов этого итерируемого набора является Iterable.

Возвращает

двумерный итерируемый набор итерируемых наборов, в котором n-я строка является n-м столбцом этого итерируемого набора.

Исключения
IllegalArgumentException

если все наборы в этом итерируемом наборе не имеют одинаковый размер.

Унаследовано от IterableOps

Источник
def unzip[A1, A2](implicit asPair: A => (A1, A2)): (Iterable[A1], Iterable[A2])

Неявным образом добавлено option2Iterable

Преобразует этот итерируемый набор пар в два набора первой и второй половины каждой пары.

val xs = Iterable(
           (1, "one"),
           (2, "two"),
           (3, "three")).unzip
// xs == (Iterable(1, 2, 3),
//        Iterable(one, two, three))
Параметры типа
A1

тип первой половины пар элементов

A2

тип второй половины пар элементов

Параметры значения
asPair

неявное преобразование, которое утверждает, что тип элементов этого итерируемого набора является парой.

Возвращает

пара итерируемых наборов, содержащих первую, соответственно вторую половину каждой пары элементов этого итерируемого набора.

Унаследовано от IterableOps

Источник
def unzip3[A1, A2, A3](implicit asTriple: A => (A1, A2, A3)): (Iterable[A1], Iterable[A2], Iterable[A3])

Неявным образом добавлено option2Iterable

Преобразует этот итерируемый набор троек в три набора первого, второго и третьего элемента каждой тройки.

val xs = Iterable(
           (1, "one", '1'),
           (2, "two", '2'),
           (3, "three", '3')).unzip3
// xs == (Iterable(1, 2, 3),
//        Iterable(one, two, three),
//        Iterable(1, 2, 3))
Параметры типа
A1

тип первого члена троек элементов

A2

тип второго члена троек элементов

A3

тип третьего члена троек элементов

Параметры значения
asTriple

неявное преобразование, которое утверждает, что тип элементов этого итерируемого набора является тройкой.

Возвращает

тройку итерируемых наборов, содержащих первый, второй, соответственно третий член каждой тройки элементов этого итерируемого набора.

Унаследовано от IterableOps

Источник
def view: View[A]

Неявным образом добавлено option2Iterable

Представление над элементами этого набора.

Унаследовано от IterableOps

Исходный код
def withFilter(p: A => Boolean): WithFilter[A, Iterable]

Неявное добавление option2Iterable

Создаёт нестрогий фильтр этого итерируемого набора.

Примечание: различие между c filter p и c withFilter p заключается в том, что первый создаёт новый набор, а второй лишь ограничивает область действия последующих map, flatMap, foreach, и withFilter операций.

Примечание: результаты могут отличаться при разных запусках, если тип основного набора не упорядочен.

Параметры значения
p

предикат для проверки элементов.

Возвращаемое значение

объект класса WithFilter, который поддерживает map, flatMap, foreach, и withFilter операции. Все эти операции применяются к тем элементам этого итерируемого набора, которые удовлетворяют предикату p.

Унаследовано от IterableOps

Исходный код
def zip[B](that: IterableOnce[B]): Iterable[(A, B)]

Неявное добавление option2Iterable

Возвращает итерируемый набор, образованный из этого итерируемого набора и другого итерируемого набора, объединив соответствующие элементы в пары. Если один из двух наборов длиннее другого, оставшиеся элементы игнорируются.

Параметры типа
B

тип второй половины возвращаемых пар

Параметры значения
that

Итерируемый набор, предоставляющий вторую половину каждой пары результата

Возвращаемое значение

новый итерируемый набор, содержащий пары, состоящие из соответствующих элементов этого итерируемого набора и that. Длина возвращаемого набора — это минимальное значение из длин этого итерируемого набора и that.

Унаследовано от IterableOps

Исходный код
def zipAll[A1 >: A, B](that: Iterable[B], thisElem: A1, thatElem: B): Iterable[(A1, B)]

Неявное добавление option2Iterable

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

Параметры значения
that

итерируемый набор, предоставляющий вторую половину каждой пары результата

thatElem

элемент, используемый для заполнения результата, если that короче этого итерируемого набора.

thisElem

элемент, используемый для заполнения результата, если этот итерируемый набор короче that.

Возвращаемое значение

новый набор типа That, содержащий пары, состоящие из соответствующих элементов этого итерируемого набора и that. Длина возвращаемого набора — это максимальное значение из длин этого итерируемого набора и that. Если этот итерируемый набор короче that, используются значения thisElem для заполнения результата. Если that короче этого итерируемого набора, используются значения thatElem для заполнения результата.

Унаследовано от IterableOps

Исходный код
def zipWithIndex: Iterable[(A, Int)]

Неявное добавление option2Iterable
Унаследовано от IterableOps

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/Option.html

Spec-Zone.ru

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