Класс scala.Option
@SerialVersionUID(-114498752079829388L)
Представляет необязательные значения. Экземпляры 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. |
|---|---|
| Супертипы | |
| Известные подтипы | |
| Тип самого себя |
Класс-подобные объекты
Исходный код
Класс WithFilter(p: A => Boolean)
Нам нужен целый класс WithFilter, чтобы сохранить контракт «не создает новую коллекцию», даже если это, кажется, мало что меняет в коллекции с максимальным размером 1.
Абстрактные методы
Исходный код
def get: A
Возвращает значение Option.
Это эквивалентно:
option match {
case Some(x) => x
case None => throw new Exception
}
| Бросает |
|
|---|---|
| Примечание | Option должен быть непустым. |
Конкретные методы
Исходный код@inline
Возвращает scala.Some, содержащую результат применения pf к содержимому этого scala.Option, если Option не пуст и pf определено для этого значения. Возвращает 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}
|
Исходный код
Проверяет, содержит ли Option заданное значение в качестве элемента.
Это эквивалентно:
option match {
case Some(x) => x == elem
case None => 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
Возвращает true, если этот Option не пуст, и предикат p возвращает true, когда применяется к значению этого scala.Option. В противном случае возвращает false.
Это эквивалентно:
option match {
case Some(x) => p(x)
case None => false
}
| Параметры значения |
|
|---|
Исходный код@inline
Возвращает этот scala.Option, если он не пуст, и применение предиката p к значению этого scala.Option возвращает true. В противном случае вернуть None.
Это эквивалентно:
option match {
case Some(x) if p(x) => Some(x)
case _ => None
}
| Параметры значения |
|
|---|
Исходный код@inline
Возвращает этот scala.Option, если он не пуст, и применение предиката p к значению этого scala.Option возвращает false. В противном случае вернуть None.
Это эквивалентно:
option match {
case Some(x) if !p(x) => Some(x)
case _ => None
}
| Параметры значения |
|
|---|
Исходный код@inline
Возвращает результат применения f к значению этого scala.Option, если этот scala.Option не пуст. Возвращает None если этот scala.Option пуст. Несколько отличается от map в том, что f ожидается, что вернёт scala.Option (который может быть None).
Это эквивалентно:
option match {
case Some(x) => f(x)
case None => None
}
| Параметры значения |
|
|---|---|
| См. также |
map foreach |
Исходный код
Возвращает вложенное значение scala.Option, если оно не пусто. В противном случае возвращает None.
Это эквивалентно:
option match {
case Some(Some(b)) => Some(b)
case _ => None
}
| Параметры значения |
|
|---|---|
| См. также | 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
| Параметры значения |
|
|---|
Исходный код@inline
Возвращает true, если этот параметр пустой или предикат p возвращает true, когда применяется к значению этого scala.Option.
Это эквивалентно:
option match {
case Some(x) => p(x)
case None => true
}
| Параметры значения |
|
|---|
Исходный код@inline
Применяет заданную процедуру f к значению параметра, если оно не пустое. В противном случае ничего не делает.
Это эквивалентно:
option match {
case Some(x) => f(x)
case None => ()
}
| Параметры значения |
|
|---|---|
| См. также |
map flatMap |
Исходный код@inline
final def getOrElse[B >: A](default: => B): B
Возвращает значение параметра, если параметр не пустой, в противном случае возвращает результат вычисления default.
Это эквивалентно:
option match {
case Some(x) => x
case None => default
}
| Параметры значения |
|
|---|
Исходный код
Возвращает true, если параметр является экземпляром scala.Some, в противном случае — false.
Это эквивалентно:
option match {
case Some(_) => true
case None => false
}
Исходный код
Возвращает true, если параметр None, в противном случае — false.
Это эквивалентно:
option match {
case Some(_) => false
case None => true
}
Исходный код
Исходный код
Возвращает одноэлементный итератор, возвращающий значение scala.Option, если оно не пустое, или пустой итератор, если параметр пустой.
Исходный код
| Классы определений | IterableOnce |
|---|
Исходный код
Аналогично 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)
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | декоратор |
Исходный код@inline
Возвращает scala.Some, содержащий результат применения f к значению этого scala.Option, если этот scala.Option не пустой. В противном случае возвращает None.
Это эквивалентно:
option match {
case Some(x) => Some(f(x))
case None => None
}
| Параметры значения |
|
|---|---|
| См. также |
flatMap foreach |
| Примечание | Это похоже на |
Исходный код
Возвращает false, если параметр None, в противном случае — true.
Это эквивалентно:
option match {
case Some(_) => true
case None => false
}
| Примечание | Реализовано здесь для избежания неявного преобразования в Iterable. |
|---|
Исходный код@inline
Возвращает этот scala.Option, если он не пустой, в противном случае возвращает результат вычисления alternative.
Это эквивалентно:
option match {
case Some(x) => Some(x)
case None => alternative
}
| Параметры значения |
|
|---|
Исходный код@inline
Возвращает значение параметра, если он не пустой, или 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
Возвращает scala.util.Right, содержащий заданный аргумент right , если параметр пустой, или scala.util.Left, содержащий значение этого scala.Option, если этот scala.Option не пустой.
Это эквивалентно:
option match {
case Some(x) => Left(x)
case None => Right(right)
}
| Параметры значения |
|
|---|---|
| См. также | toRight |
Исходный код
Возвращает одноэлементный список, содержащий значение scala.Option, если оно не пустое, или пустой список, если scala.Option пустой.
Это эквивалентно:
option match {
case Some(x) => List(x)
case None => Nil
}
Source@inline
Возвращает scala.util.Left, содержащий переданный аргумент left, если этот scala.Option пустой, или scala.util.Right, содержащий значение этого scala.Option, если он непустой.
Это эквивалентно:
option match {
case Some(x) => Right(x)
case None => Left(left)
}
| Параметры значения |
|
|---|---|
| См. также | toLeft |
Source
Преобразует Option пары в Option первого элемента и Option второго элемента.
Это эквивалентно:
option match {
case Some((x, y)) => (Some(x), Some(y))
case _ => (None, None)
}
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | пара Option, содержащая, соответственно, первую и вторую половины пары элементов этого Option. |
Source
Преобразует Option тройки в три Option, каждый из которых содержит элемент из соответствующей позиции тройки.
Это эквивалентно:
option match {
case Some((x, y, z)) => (Some(x), Some(y), Some(z))
case _ => (None, None, None)
}
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | тройка Option, содержащая, соответственно, первый, второй и третий элементы из тройки элементов этого Option. |
Source@inline
Необходим для предотвращения неявного преобразования scala.Option в scala.collection.Iterable в for выражениях.
Source
Возвращает scala.Some, образованный из этого Option и другого Option путем объединения соответствующих элементов в пару. Если хотя бы один из двух Option пуст, возвращается None.
Это эквивалентно:
(option1, option2) match {
case (Some(x), Some(y)) => Some((x, y))
case _ => None
}
| Параметры значения |
|
|---|---|
| Пример |
// 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
Псевдоним для concat
| Наследован из | IterableOps |
|---|
Source@inline
Добавляет все элементы этой коллекции в 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
| Параметры значения |
|
|---|---|
| Возвращает | StringBuilder |
| Наследован из | IterableOnceOps |
Source@inline
Добавляет все элементы этой коллекции в 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
| Параметры значения |
|
|---|---|
| Возвращает | StringBuilder |
| Наследован из | IterableOnceOps |
Source
Добавляет все элементы этой коллекции в 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)
| Параметры значения |
|
|---|---|
| Возвращает | StringBuilder |
| Наследован из | IterableOnceOps |
Source
Метод, который следует вызывать из каждого хорошо спроектированного метода equals, который может быть переопределён в подклассе. См. Programming in Scala, Глава 28 для обсуждения и проектирования.
| Параметры значения |
|
|---|---|
| Возвращает | true, если этот экземпляр может быть равен |
| Наследован из | Equals |
Source
| Наследован из | IterableOps |
|---|
Source
Находит первый элемент коллекции, для которого заданная частичная функция определена, и применяет частичную функцию к нему.
Примечание: может не завершаться для коллекций бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
| Параметры значения |
|
|---|---|
| Возвращает | значение опции, содержащей pf, применённое к первому значению, для которого оно определено, или |
| Пример |
|
| Унаследовано от | IterableOnceOps |
Источник
Возвращает новую итерируемую коллекцию, содержащую элементы левого операнда, за которыми следуют элементы правого операнда. Тип элемента итерируемой коллекции — наиболее специфический суперкласс, охватывающий типы элементов двух операндов.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | новая итерируемая коллекция, содержащая все элементы этой итерируемой коллекции, за которыми следуют все элементы |
| Унаследовано от | IterableOps |
Источник
Копирует элементы в массив, возвращая количество скопированных элементов.
Заполняет заданный массив xs начиная с индекса start не более чем len элементами этой коллекции.
Копирование прекращается, как только скопированы все элементы этой коллекции, достигнут конец массива или скопировано len элементов.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | количество элементов, записанных в массив |
| Примечание | Переиспользование: после вызова этого метода итерируемый объект, на котором он был вызван, следует удалить. Использование его в ином случае неопределено и может быть изменено. |
| Унаследовано от | IterableOnceOps |
Источник@deprecatedOverriding("Это всегда должно перенаправлять вызов на 3-аргументную версию этого метода", since = "2.13.4")
Копирует элементы в массив, возвращая количество скопированных элементов.
Заполняет заданный массив xs начиная с индекса start значениями из этой коллекции.
Копирование прекращается, как только скопированы все элементы этой коллекции или достигнут конец массива.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | количество элементов, записанных в массив |
| Примечание | Переиспользование: после вызова этого метода итерируемый объект, на котором он был вызван, следует удалить. Использование его в ином случае неопределено и может быть изменено. |
| Унаследовано от | IterableOnceOps |
Источник@deprecatedOverriding("Это всегда должно перенаправлять вызов на 3-аргументную версию этого метода", since = "2.13.4")
Копирует элементы в массив, возвращая количество скопированных элементов.
Заполняет заданный массив xs начиная с индекса start значениями из этой коллекции.
Копирование прекращается, как только скопированы все элементы этой коллекции или достигнут конец массива.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | количество элементов, записанных в массив |
| Примечание | Переиспользование: после вызова этого метода итерируемый объект, на котором он был вызван, следует удалить. Использование его в ином случае неопределено и может быть изменено. |
| Унаследовано от | IterableOnceOps |
Источник
Проверяет, удовлетворяет ли каждый элемент итератора этой коллекции условию предиката для соответствующего элемента другой коллекции.
Примечание: не завершится для коллекций бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает |
|
| Унаследовано от | IterableOnceOps |
Источник
Подсчитывает количество элементов в коллекции, удовлетворяющих предикату.
Примечание: не завершится для коллекций бесконечного размера.
| Параметры значения |
|
|---|---|
| Возвращает | количество элементов, удовлетворяющих предикату |
| Унаследовано от | IterableOnceOps |
Источник
| Унаследовано от | IterableOps |
|---|
Источник
Выбирает все элементы, кроме последних n.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
| Параметры значения |
|
|---|---|
| Возвращает | итерируемая коллекция, состоящая из всех элементов этой итерируемой коллекции, кроме последних |
| Унаследовано от | IterableOps |
Source
| Inherited from | IterableOps |
|---|
Source
Проверяет, выполняется ли предикат хотя бы для одного элемента в этом наборе.
Примечание: для наборов бесконечного размера может не завершиться.
| Параметры |
|
|---|---|
| Возвращает |
|
| Inherited from | IterableOnceOps |
Source
| Inherited from | IterableOps |
|---|
Source
| Inherited from | IterableOps |
|---|
Source
Находит первый элемент в наборе, удовлетворяющий предикату, если такой существует.
Примечание: для наборов бесконечного размера может не завершиться.
Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен.
| Параметры |
|
|---|---|
| Возвращает | значение типа option, содержащее первый элемент в наборе, удовлетворяющий |
| Inherited from | IterableOnceOps |
Source
| Inherited from | IterableOps |
|---|
Source
| Inherited from | IterableOps |
|---|
Source
def fold[A1 >: A](z: A1)(op: (A1, A1) => A1): A1
Вычисляет свёртку элементов этого набора данных с использованием указанного ассоциативного бинарного оператора. Реализация по умолчанию в IterableOnce эквивалентна foldLeft, но может быть переопределена для более эффективного порядка обхода.
Порядок выполнения операций над элементами не определён и может быть недетерминированным.
Примечание: не завершится для коллекций бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | результат применения оператора свёртки |
| Унаследовано от | IterableOnceOps |
Source
def foldLeft[B](z: B)(op: (B, A) => B): B
Применяет бинарный оператор к начальному значению и всем элементам этого набора данных слева направо.
Примечание: не завершится для коллекций бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базового набора данных не упорядочен или оператор не ассоциативен и коммутативен.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | результат вставки |
| Унаследовано от | IterableOnceOps |
Source
def foldRight[B](z: B)(op: (A, B) => B): B
Применяет бинарный оператор ко всем элементам этого набора данных и начальному значению, двигаясь справа налево.
Примечание: не завершится для коллекций бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базового набора данных не упорядочен или оператор не ассоциативен и коммутативен.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | результат вставки |
| Унаследовано от | IterableOnceOps |
Source
Проверяет, выполняется ли предикат для всех элементов этого набора данных.
Примечание: может не завершиться для коллекций бесконечного размера.
| Параметры значения |
|
|---|---|
| Возвращает |
|
| Унаследовано от | IterableOnceOps |
Source
Применяет f к каждому элементу для побочных эффектов. Примечание: параметр [U] необходим для помощи в процессе вывода типов scalac.
| Наследуется от | IterableOnceOps |
|---|
Источник
| Наследуется от | IterableFactoryDefaults |
|---|
Источник
Разделяет эту итерируемую коллекцию на карту итерируемых коллекций в соответствии с некоторой функцией-дискриминатором.
Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает |
Карта, сопоставляющая ключи итерируемым коллекциям, для которой выполняется следующее инвариантное свойство: (xs groupBy f)(k) = xs filter (x => f(x) == k) То есть каждый ключ |
| Наследуется от | IterableOps |
Источник
Разделяет эту итерируемую коллекцию на карту итерируемых коллекций в соответствии с функцией-дискриминатором 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)
Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Наследуется от | IterableOps |
Источник
def groupMapReduce[K, B](key: A => K)(f: A => B)(reduce: (B, B) => B): Map[K, B]
Разделяет эту итерируемую коллекцию на карту в соответствии с функцией-дискриминатором key. Все значения, имеющие одинаковый дискриминатор, затем преобразуются функцией f и затем сводятся к единственному значению с помощью функции reduce.
Это эквивалентно groupBy(key).mapValues(_.map(f).reduce(reduce)), но более эффективно.
def occurrences[A](as: Seq[A]): Map[A, Int] = as.groupMapReduce(identity)(_ => 1)(_ + _)
Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.
| Наследуется от | IterableOps |
|---|
Источник
Разделяет элементы на итерируемые коллекции фиксированного размера.
| Параметры значения |
|
|---|---|
| Возвращает | Итератор, генерирующий итерируемые коллекции размером |
| См. также | scala.collection.Iterator, метод |
| Наследуется от | IterableOps |
Источник
def head: A
Выбирает первый элемент этой итерируемой коллекции.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
| Возвращает | первый элемент этой итерируемой коллекции. |
|---|---|
| Исключения |
|
| Наследуется от | IterableOps |
Источник
def headOption: Option[A]
Возвращает первый элемент, если он есть, или None, если коллекция пуста.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
| Возвращает | первый элемент этой итерируемой коллекции, если она не пуста; None, если она пуста. |
|---|---|
| Наследуется от | IterableOps |
Источник
Часть коллекции без последнего элемента.
Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.
| Наследуется от | IterableOps |
|---|
Источник
Итерируется по начальным частям этой итерируемой коллекции. Первое значение будет этой итерируемой коллекцией, а последнее — пустой итерируемой коллекцией, а промежуточные значения — результаты последовательных применений init.
Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычисляться.
| Возвращает | итератор по всем начальным частям этой итерируемой коллекции |
|---|---|
| Пример |
|
| Наследуется от | IterableOps |
Источник
Проверяет, пуста ли коллекция.
Примечание: реализации в подклассах, которые не являются многократно итерируемыми, должны позаботиться о том, чтобы не потреблять какие-либо элементы, когда isEmpty вызывается.
| Возвращает | true, если коллекция не содержит элементов, false в противном случае. |
|---|---|
| Наследуется от | IterableOnceOps |
Источник
Итератор может быть использован только один раз
| Наследуется от | IterableOnce |
|---|
Источник
| Возвращает | Количество элементов в этом наборе, если его можно вычислить без затрат, в противном случае -1. Без затрат обычно означает: Не требует обхода набора. |
|---|---|
| Унаследовано от | IterableOnce |
Исходный код
def last: A
Выбирает последний элемент.
Примечание: может возвращать разные результаты при разных запусках, если тип базового набора не упорядочен.
| Возвращает | Последний элемент этого итерируемого набора. |
|---|---|
| Выбрасывает |
|
| Унаследовано от | IterableOps |
Исходный код
def lastOption: Option[A]
Возвращает последний элемент в виде Option.
Примечание: может возвращать разные результаты при разных запусках, если тип базового набора не упорядочен.
| Возвращает | последний элемент этого итерируемого набора$ , если он не пуст, |
|---|---|
| Унаследовано от | IterableOps |
Исходный код
| Унаследовано от | IterableOps |
|---|
Исходный код
Находит наибольший элемент.
Примечание: не завершит работу для бесконечных наборов.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | наибольший элемент этого набора относительно упорядочения |
| Выбрасывает |
|
| Унаследовано от | IterableOnceOps |
Исходный код
Находит первый элемент, который дает наибольшее значение, измеренное функцией f.
Примечание: не завершит работу для бесконечных наборов.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | первый элемент этого набора с наибольшим значением, измеренным функцией f, относительно упорядочения |
| Выбрасывает |
|
| Унаследовано от | IterableOnceOps |
Исходный код
Находит первый элемент, который даёт наибольшее значение, измеренное функцией f.
Примечание: не завершится для коллекций бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | значение типа Option, содержащее первый элемент этой коллекции с наибольшим значением, измеренным функцией f относительно порядка |
| Унаследовано от | IterableOnceOps |
Источник
Находит наибольший элемент.
Примечание: не завершится для коллекций бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | значение типа Option, содержащее наибольший элемент этой коллекции относительно порядка |
| Унаследовано от | IterableOnceOps |
Источник
Находит наименьший элемент.
Примечание: не завершится для коллекций бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | наименьший элемент этой коллекции относительно порядка |
| Исключения |
|
| Унаследовано от | IterableOnceOps |
Источник
Находит первый элемент, который даёт наименьшее значение, измеренное функцией f.
Примечание: не завершится для коллекций бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | первый элемент этой коллекции с наименьшим значением, измеренным функцией f относительно порядка |
| Исключения |
|
| Унаследовано от | IterableOnceOps |
Источник
Находит первый элемент, который даёт наименьшее значение, измеренное функцией f.
Примечание: не завершится для коллекций бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | значение типа Option, содержащее первый элемент этой коллекции с наименьшим значением, измеренным функцией f относительно порядка |
| Унаследовано от | IterableOnceOps |
Source
Находит наименьший элемент.
Примечание: не будет завершаться для коллекций бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | значение option, содержащее наименьший элемент этой коллекции по отношению к упорядочению |
| Унаследовано от | IterableOnceOps |
Source@inline
Отображает все элементы этой коллекции в строке.
Делегирует addString, который можно переопределить.
| Возвращает | строковое представление этой коллекции. В результирующей строке строковые представления (в соответствии с методом |
|---|---|
| Унаследовано от | IterableOnceOps |
Source@inline
Отображает все элементы этой коллекции в строке с использованием разделителя.
Делегирует addString, который можно переопределить.
| Параметры значения |
|
|---|---|
| Возвращает | строковое представление этой коллекции. В результирующей строке строковые представления (в соответствии с методом |
| Пример |
|
| Унаследовано от | IterableOnceOps |
Source
Отображает все элементы этой коллекции в строке с использованием начальной, конечной и разделительных строк.
Делегирует addString, который можно переопределить.
| Параметры значения |
|
|---|---|
| Возвращает | строковое представление этой коллекции. Результирующая строка начинается со строки |
| Пример |
|
| Унаследовано от | IterableOnceOps |
Source
| Унаследовано от | IterableFactoryDefaults |
|---|
Source@deprecatedOverriding("nonEmpty is defined as !isEmpty; override isEmpty instead", "2.13.0")
Проверяет, не пуста ли коллекция.
| Возвращает |
|
|---|---|
| Унаследовано от | IterableOnceOps |
Source
Пара, состоящая из элементов, удовлетворяющих предикату p, и элементов, которые не удовлетворяют. Интересно, потому что она разделяет коллекцию на две части.
Реализация по умолчанию, предоставленная здесь, должна дважды пройтись по коллекции. Строгие коллекции имеют переопределенную версию partition в StrictOptimizedIterableOps, которая требует только одного прохода.
| Унаследовано от | IterableOps |
|---|
Source
Применяет функцию 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))
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | пару коллекций: первая содержит те значения, возвращенные функцией |
| Унаследовано от | IterableOps |
Source
Перемножает элементы этой коллекции.
Примечание: не будет завершаться для коллекций бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | произведение всех элементов этой коллекции относительно оператора |
| Унаследовано от | IterableOnceOps |
Source
def productArity: Int
Размер этого произведения.
| Возвращает | для произведения |
|---|---|
| Унаследовано от | Product |
Source
n-ый элемент этого произведения, нумерация с 0. Другими словами, для произведения A(x1, ..., xk), возвращает x(n+1), где 0 <= n < k.
| Параметры значения |
|
|---|---|
| Возвращает | элемент |
| Исключение |
|
| Унаследовано от | Product |
Исходный код
Имя n-го элемента этого произведения, нумерация с 0. В стандартной реализации — пустая строка.
| Параметры значения |
|
|---|---|
| Возвращает | имя указанного элемента |
| Исключение |
|
| Унаследовано от | Product |
Исходный код
Итератор по именам всех элементов этого произведения.
| Унаследовано от | Product |
|---|
Исходный код
Итератор по всем элементам этого произведения.
| Возвращает | в стандартной реализации, |
|---|---|
| Унаследовано от | Product |
Исходный код
def productPrefix: String
Строка, используемая в методах toString производных классов. Реализации могут переопределять этот метод, чтобы добавить строковый префикс к результату методов toString.
| Возвращает | в стандартной реализации, пустая строка |
|---|---|
| Унаследовано от | Product |
Исходный код
def reduce[B >: A](op: (B, B) => B): B
Применяет заданный ассоциативный бинарный оператор к элементам этой коллекции.
Порядок операций над элементами не определен и может быть не детерминированным.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | Результат применения оператора reduce |
| Исключение |
|
| Унаследовано от | IterableOnceOps |
Исходный код
def reduceLeft[B >: A](op: (B, A) => B): B
Применяет бинарный оператор ко всем элементам этой коллекции слева направо.
Примечание: не завершится для коллекций бесконечного размера.
Примечание: может возвращать разные результаты при разных запусках, если тип коллекции не упорядочен, или оператор не является ассоциативным и коммутативным.
| Тип параметров |
|
|---|---|
| Параметры значений |
|
| Возвращает | результат вставки |
| Выбрасывает |
|
| Унаследовано от | IterableOnceOps |
Источник
def reduceLeftOption[B >: A](op: (B, A) => B): Option[B]
Применяет бинарный оператор ко всем элементам этого набора слева направо (последовательно).
Примечание: не завершится для наборов бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен или оператор не ассоциативен и коммутативен.
| Тип параметров |
|
|---|---|
| Параметры значений |
|
| Возвращает | значение option, содержащее результат |
| Унаследовано от | IterableOnceOps |
Источник
def reduceOption[B >: A](op: (B, B) => B): Option[B]
Сводит элементы этого набора, если они есть, с помощью указанного ассоциативного бинарного оператора.
Порядок выполнения операций над элементами не определен и может быть не детерминированным.
| Тип параметров |
|
|---|---|
| Параметры значений |
|
| Возвращает | Значение option, содержащее результат применения оператора reduce |
| Унаследовано от | IterableOnceOps |
Источник
def reduceRight[B >: A](op: (A, B) => B): B
Применяет бинарный оператор ко всем элементам этого набора, справа налево.
Примечание: не завершится для наборов бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен или оператор не ассоциативен и коммутативен.
| Тип параметров |
|
|---|---|
| Параметры значений |
|
| Возвращает | результат вставки |
| Выбрасывает |
|
| Унаследовано от | IterableOnceOps |
Источник
def reduceRightOption[B >: A](op: (A, B) => B): Option[B]
Возвращает значение option для применения бинарного оператора к элементам этого набора, справа налево.
Примечание: не завершится для наборов бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен или оператор не ассоциативен и коммутативен.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | значение типа Option, содержащее результат |
| Унаследовано от | IterableOnceOps |
Источник
| Унаследовано от | IterableOnceOps |
|---|
Источник
Вычисляет префиксную сумму элементов коллекции.
Примечание: Нейтральный элемент z может быть применен более одного раза.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | новая коллекция типа Iterable, содержащая префиксную сумму элементов в этой коллекции |
| Унаследовано от | IterableOps |
Источник
| Унаследовано от | IterableOps |
|---|
Источник
Создаёт коллекцию, содержащую кумулятивные результаты применения оператора справа налево. Голова коллекции — это последний кумулятивный результат.
Примечание: не завершится для коллекций бесконечной длины.
Примечание: может возвращать разные результаты при разных запусках, если только тип базовой коллекции не является упорядоченным.
Примечание: даже при применении к просмотру или ленивой коллекции всегда будет принудительно вычислять элементы.
Пример:
List(1, 2, 3, 4).scanRight(0)(_ + _) == List(10, 9, 7, 4, 0)
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | коллекция с промежуточными результатами |
| Унаследовано от | IterableOps |
Источник
Размер этой коллекции.
Примечание: не завершится для коллекций бесконечной длины.
| Возвращает | количество элементов в этой коллекции. |
|---|---|
| Унаследовано от | IterableOnceOps |
Источник
Сравнивает размер этой коллекции с размером другой Iterable.
| Параметры значения |
|
|---|---|
| Возвращает |
Значение x < 0 if this.size < that.size x == 0 if this.size == that.size x > 0 if this.size > that.size Метод, как он реализован здесь, не вызывает |
| Унаследовано от | IterableOps |
Источник
Сравнивает размер этой коллекции с тестовым значением.
| Параметры значения |
|
|---|---|
| Возвращает |
Значение x < 0 if this.size < otherSize x == 0 if this.size == otherSize x > 0 if this.size > otherSize Метод, как он реализован здесь, не вызывает |
| См. также | |
| Унаследовано от | IterableOps |
Источник@inline
final def sizeIs: SizeCompareOps
Возвращает значение класса, содержащее операции для сравнения размера этой коллекции с тестовым значением.
Эти операции реализованы с помощью 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 |
|---|
Источник
| Унаследовано от | IterableOps |
|---|
Источник
Группирует элементы в блоки фиксированного размера, перемещая "скользящее окно" по ним (в отличие от их разбиения, как в grouped.)
Возвращаемый итератор будет пустым при вызове на пустой коллекции. Последний элемент, который производит итератор, может быть меньше размера окна, если исходная коллекция не исчерпана окном до исчерпания, а её последний элемент не пропущен шагом перед ним.
| Параметры значения |
|
|---|---|
| Возвращает | Итератор, генерирующий итерируемые коллекции размером |
| См. также | scala.collection.Iterator, метод |
| Пример |
|
| Унаследовано от | IterableOps |
Источник
Группирует элементы в блоки фиксированного размера, пропуская «скользящее окно» по ним (в отличие от разбиения, как это делается в grouped.)
Пустой набор возвращает пустой итератор, а непустой набор, содержащий меньше элементов, чем размер окна, возвращает итератор, который будет генерировать исходный набор в качестве единственного элемента.
| Параметры значения |
|
|---|---|
| Возвращает | Итератор, генерирующий итерируемые наборы размера |
| См. также | scala.collection.Iterator, метод |
| Пример |
|
| Унаследовано от | IterableOps |
Источник
| Унаследовано от | IterableOps |
|---|
Источник
Возвращает 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 |
|---|
Источник
Возвращает 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 |
|---|
Источник
Суммирует элементы этого набора.
Примечание: не будет завершаться для наборов бесконечного размера.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | сумма всех элементов этого набора относительно оператора |
| Унаследовано от | IterableOnceOps |
Источник
Остальная часть набора без первого элемента.
| Унаследовано от | IterableOps |
|---|
Источник
Итерируется по хвостам этого итерируемого набора. Первое значение будет этим итерируемым набором, а последнее — пустым итерируемым набором, а промежуточные значения будут результатом последовательных применений tail.
| Возвращает | итератор по всем хвостам этого итерируемого набора |
|---|---|
| Пример |
|
| Унаследовано от | IterableOps |
Источник
| Унаследовано от | IterableOps |
|---|
Источник
Выбирает последние n элементов.
Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен.
| Параметры значения |
|
|---|---|
| Возвращает | итерируемый набор, содержащий только последние |
| Унаследовано от | IterableOps |
Источник
Извлекает самый длинный префикс элементов, удовлетворяющих предикату.
Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен.
| Параметры значения |
|
|---|---|
| Возвращает | наибольший префикс этого итерируемого набора элементов, все из которых удовлетворяют предикату |
| Унаследовано от | IterableOps |
Источник
При заданном фабрике наборов factory, преобразовать этот набор в соответствующее представление для текущего типа элемента A. Примеры использования:
xs.to(List) xs.to(ArrayBuffer) xs.to(BitSet) // для xs: Iterable[Int]
| Унаследовано от | IterableOnceOps |
|---|
Источник
Преобразовать набор в массив.
Примечание к реализации: НЕ вызывать Array.from из этого метода.
| Унаследовано от | IterableOnceOps |
|---|
Источник@inline
| Унаследовано от | IterableOnceOps |
|---|
Источник
def toIndexedSeq: IndexedSeq[A]
| Унаследовано от | IterableOnceOps |
|---|
Источник
| Унаследовано от | IterableOnceOps |
|---|
Источник
| Унаследовано от | IterableOnceOps |
|---|
Источник
| Возвращает | Этот набор в виде |
|---|---|
| Унаследовано от | IterableOnceOps |
Источник
| Унаследовано от | IterableOnceOps |
|---|
Источник
| Унаследовано от | IterableOnceOps |
|---|
Источник
Транспонирует этот итерируемый набор итерируемых наборов в итерируемый набор итерируемых наборов.
Тип результирующего набора будет определяться статическим типом итерируемого набора. Например:
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))
Примечание: Даже при применении к представлению или ленивому набору, элементы будут всегда форсироваться.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | двумерный итерируемый набор итерируемых наборов, в котором n-я строка является n-м столбцом этого итерируемого набора. |
| Исключения |
|
| Унаследовано от | IterableOps |
Источник
Преобразует этот итерируемый набор пар в два набора первой и второй половины каждой пары.
val xs = Iterable(
(1, "one"),
(2, "two"),
(3, "three")).unzip
// xs == (Iterable(1, 2, 3),
// Iterable(one, two, three))
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | пара итерируемых наборов, содержащих первую, соответственно вторую половину каждой пары элементов этого итерируемого набора. |
| Унаследовано от | IterableOps |
Источник
Преобразует этот итерируемый набор троек в три набора первого, второго и третьего элемента каждой тройки.
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))
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | тройку итерируемых наборов, содержащих первый, второй, соответственно третий член каждой тройки элементов этого итерируемого набора. |
| Унаследовано от | IterableOps |
Источник
Представление над элементами этого набора.
| Унаследовано от | IterableOps |
|---|
Исходный код
Создаёт нестрогий фильтр этого итерируемого набора.
Примечание: различие между c filter p и c withFilter p заключается в том, что первый создаёт новый набор, а второй лишь ограничивает область действия последующих map, flatMap, foreach, и withFilter операций.
Примечание: результаты могут отличаться при разных запусках, если тип основного набора не упорядочен.
| Параметры значения |
|
|---|---|
| Возвращаемое значение | объект класса |
| Унаследовано от | IterableOps |
Исходный код
Возвращает итерируемый набор, образованный из этого итерируемого набора и другого итерируемого набора, объединив соответствующие элементы в пары. Если один из двух наборов длиннее другого, оставшиеся элементы игнорируются.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращаемое значение | новый итерируемый набор, содержащий пары, состоящие из соответствующих элементов этого итерируемого набора и |
| Унаследовано от | IterableOps |
Исходный код
Возвращает итерируемый набор, образованный из этого итерируемого набора и другого итерируемого набора, объединив соответствующие элементы в пары. Если один из двух наборов короче другого, используются плацехолдерные элементы для расширения более короткого набора до длины более длинного.
| Параметры значения |
|
|---|---|
| Возвращаемое значение | новый набор типа |
| Унаследовано от | IterableOps |
Исходный код
| Унаследовано от | 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