Spec-Zone.ru › Scala 3.1

Класс scala.collection.immutable.LazyList

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

@SerialVersionUID(3L)
final class LazyList[+A] extends AbstractSeq[A] with LinearSeq[A] with LinearSeqOps[A, LazyList, LazyList[A]] with IterableFactoryDefaults[A, LazyList] with Serializable

Этот класс реализует неизменяемый связанный список. Мы называем его «ленивым», потому что он вычисляет свои элементы только тогда, когда они нужны.

Элементы запоминаются в кэше; другими словами, значение каждого элемента вычисляется не более одного раза.

Элементы вычисляются в порядке следования и никогда не пропускаются. Другими словами, обращение к хвосту вызывает вычисление головы сначала.

Насколько ленивым является LazyList? Когда у вас есть значение типа LazyList, вы ещё не знаете, пустой ли список или нет. Если вы узнаете, что он не пустой, то вы также знаете, что голова была вычислена. Но хвост сам по себе является LazyList, чья пустота или не пустота может остаться неопределенной.

LazyList может быть бесконечным. Например, LazyList.from(0) содержит все натуральные числа 0, 1, 2 и так далее. Для бесконечных последовательностей некоторые методы (такие как count, sum, max или min) не завершатся.

Вот пример:

import scala.math.BigInt
object Main extends App {
  val fibs: LazyList[BigInt] =
    BigInt(0) #:: BigInt(1) #:: fibs.zip(fibs.tail).map{ n => n._1 + n._2 }
  fibs.take(5).foreach(println)
}

// prints
//
// 0
// 1
// 1
// 2
// 3

Чтобы проиллюстрировать, добавим немного вывода к определению fibs, чтобы увидеть, что происходит.

import scala.math.BigInt
object Main extends App {
  val fibs: LazyList[BigInt] =
    BigInt(0) #:: BigInt(1) #::
      fibs.zip(fibs.tail).map{ n =>
        println(s"Adding ${n._1} and ${n._2}")
        n._1 + n._2
      }
  fibs.take(5).foreach(println)
  fibs.take(6).foreach(println)
}

// prints
//
// 0
// 1
// Adding 0 and 1
// 1
// Adding 1 and 1
// 2
// Adding 1 and 2
// 3

// And then prints
//
// 0
// 1
// 1
// 2
// 3
// Adding 2 and 3
// 5

Обратите внимание, что определение fibs использует val , а не def. Кэширование LazyList требует наличия места для хранения информации, и val позволяет это сделать.

Дополнительные замечания о семантике LazyList:

- Хотя LazyList изменяется при обращении к нему, это не противоречит его неизменяемости. После того, как значения кэшированы, они не изменяются. Значения, которые ещё предстоит кэшировать, всё ещё «существуют», просто они ещё не вычислены.

- Следует проявлять осторожность при использовании кэширования; оно может потреблять много памяти, если вы не будете внимательны. Это потому, что кэширование LazyList создаёт структуру, очень похожую на scala.collection.immutable.List. Пока что-то держит за голову, голова держит за хвост, и так далее рекурсивно. Если, с другой стороны, ничего не держит за голову (например, если мы использовали def для определения LazyList), то как только она больше не используется напрямую, она исчезает.

- Обратите внимание, что некоторые операции, включая drop, dropWhile, flatMap или collect могут обработать большое количество промежуточных элементов, прежде чем вернуть результат.

Вот ещё один пример. Начнём с натуральных чисел и перейдём по ним.

// We'll start with a silly iteration
def loop(s: String, i: Int, iter: Iterator[Int]): Unit = {
  // Stop after 200,000
  if (i < 200001) {
    if (i % 50000 == 0) println(s + i)
    loop(s, iter.next(), iter)
  }
}

// Our first LazyList definition will be a val definition
val lazylist1: LazyList[Int] = {
  def loop(v: Int): LazyList[Int] = v #:: loop(v + 1)
  loop(0)
}

// Because lazylist1 is a val, everything that the iterator produces is held
// by virtue of the fact that the head of the LazyList is held in lazylist1
val it1 = lazylist1.iterator
loop("Iterator1: ", it1.next(), it1)

// We can redefine this LazyList such that all we have is the Iterator left
// and allow the LazyList to be garbage collected as required.  Using a def
// to provide the LazyList ensures that no val is holding onto the head as
// is the case with lazylist1
def lazylist2: LazyList[Int] = {
  def loop(v: Int): LazyList[Int] = v #:: loop(v + 1)
  loop(0)
}
val it2 = lazylist2.iterator
loop("Iterator2: ", it2.next(), it2)

// And, of course, we don't actually need a LazyList at all for such a simple
// problem.  There's no reason to use a LazyList if you don't actually need
// one.
val it3 = new Iterator[Int] {
  var i = -1
  def hasNext = true
  def next(): Int = { i += 1; i }
}
loop("Iterator3: ", it3.next(), it3)

- В примере fibs ранее, тот факт, что tail вообще работает, представляет интерес. fibs имеет начальное (0, 1, LazyList(...)), поэтому tail является детерминированным. Если бы мы определили fibs таким образом, чтобы только 0 были конкретно известны, то акт определения tail потребовал бы вычисления tail, поэтому вычисление не смогло бы продвинуться, как в этом коде:

// The first time we try to access the tail we're going to need more
// information which will require us to recurse, which will require us to
// recurse, which...
lazy val sov: LazyList[Vector[Int]] = Vector(0) #:: sov.zip(sov.tail).map { n => n._1 ++ n._2 }

Определение fibs выше создаёт больше объектов, чем необходимо, в зависимости от того, как вы можете его реализовать. Следующая реализация предоставляет более «эффективную» реализацию из-за того, что имеет более прямой путь к самим числам:

lazy val fib: LazyList[Int] = {
  def loop(h: Int, n: Int): LazyList[Int] = h #:: loop(n, h + n)
  loop(1, 1)
}

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

Откладывание оценки того, пуст ли LazyList или нет, до тех пор, пока это не потребуется, позволяет LazyList не выполнять оценку элементов при вызове filter.

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

например:

def tailWithSideEffect: LazyList[Nothing] = {
  println("getting empty LazyList")
  LazyList.empty
}

val emptyTail = tailWithSideEffect // prints "getting empty LazyList"

val suspended = 1 #:: tailWithSideEffect // doesn't print anything
val tail = suspended.tail // although the tail is evaluated, *still* nothing is yet printed
val filtered = tail.filter(_ => false) // still nothing is printed
filtered.isEmpty // prints "getting empty LazyList"
Параметры типа
A

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

См. также

"Обзор библиотеки коллекций Scala" раздел по LazyLists для получения дополнительной информации.

Надтипы
24 типа
интерфейс Serializable
интерфейс LinearSeq[A]
интерфейс LinearSeqOps[A, LazyList, LazyList[A]]
интерфейс LinearSeq[A]
интерфейс LinearSeqOps[A, LazyList, LazyList[A]]
класс AbstractSeq[A]
интерфейс Seq[A]
интерфейс SeqOps[A, LazyList, LazyList[A]]
интерфейс Iterable[A]
класс AbstractSeq[A]
интерфейс Seq[A]
интерфейс Equals
интерфейс SeqOps[A, LazyList, LazyList[A]]
интерфейс PartialFunction[Int, A]
интерфейс Int => A
класс AbstractIterable[A]
интерфейс Iterable[A]
интерфейс IterableFactoryDefaults[A, LazyList]
интерфейс IterableOps[A, LazyList, LazyList[A]]
интерфейс IterableOnceOps[A, LazyList, LazyList[A]]
интерфейс IterableOnce[A]
класс Object
интерфейс Matchable
класс Any

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

Исходный код
def #::[B >: A](elem: => B): LazyList[B]

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

Создаёт LazyList, состоящий из заданного первого элемента, за которым следуют элементы из другого LazyList.

Исходный код
def #:::[B >: A](prefix: LazyList[B]): LazyList[B]

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

Создаёт LazyList, состоящий из конкатенации заданного LazyList и другого LazyList.

Исходный код
override def addString(sb: StringBuilder, start: String, sep: String, end: String): StringBuilder

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

Неопределённое состояние представлено "<not computed>", а циклы — "<cycle>".

Этот метод оценивает все элементы коллекции.

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

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

sb

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

sep

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

start

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

Возвращает

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

Классы определения IterableOnceOps

Исходный код
override def appended[B >: A](elem: B): LazyList[B]

Копия этого ленивого списка с добавленным элементом.

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

Пример:

scala> val a = List(1)
a: List[Int] = List(1)

scala> val b = a :+ 2
b: List[Int] = List(1, 2)

scala> println(a)
List(1)

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Примечание: Повторное объединение вызовов методов append (appended, appendedAll, lazyAppendedAll) без принудительной оценки промежуточных результирующих ленивых списков может переполнить стек при принудительной оценке конечного результата.

Классы определения SeqOps

Source
override def appendedAll[B >: A](suffix: IterableOnce[B]): LazyList[B]

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

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

Definition Classes SeqOps

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

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Definition Classes IterableOps -> IterableOnceOps

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

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

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

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

Definition Classes IterableOnceOps

Source
override def diff[B >: A](that: Seq[B]): LazyList[A]

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Definition Classes SeqOps

Source
override def drop(n: Int): LazyList[A]

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

Этот метод ничего не вычисляет, пока над результатом не выполняется операция (например, вызов head или tail, или проверка на пустоту). Кроме того, он сохраняет ленивость для всех, кроме первых n элементов.

Definition Classes IterableOps -> IterableOnceOps

Source
override def dropRight(n: Int): LazyList[A]

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

Этот метод ничего не вычисляет, пока над результатом не выполняется операция (например, вызов head или tail, или проверка на пустоту).

Definition Classes IterableOps

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

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

Этот метод ничего не вычисляет, пока над результатом не выполняется операция (например, вызов head или tail, или проверка на пустоту). Кроме того, он сохраняет ленивость для всех элементов после того, как предикат возвращает false.

Definition Classes IterableOps -> IterableOnceOps

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

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Definition Classes IterableOps -> IterableOnceOps

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

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Definition Classes IterableOps -> IterableOnceOps

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

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

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

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

Definition Classes LinearSeqOps -> IterableOnceOps

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

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

Например:

def getWords(lines: Seq[String]): Seq[String] = lines flatMap (line => line split "\\W+")

Тип результирующей коллекции определяется статическим типом ленивого списка. Это иногда может привести к неожиданным результатам. Например:

// lettersOf will return a Seq[Char] of likely repeated letters, instead of a Set
def lettersOf(words: Seq[String]) = words flatMap (word => word.toSet)

// lettersOf will return a Set[Char], not a Seq
def lettersOf(words: Seq[String]) = words.toSet flatMap ((word: String) => word.toSeq)

// xs will be an Iterable[Int]
val xs = Map("a" -> List(11,111), "b" -> List(22,222)).flatMap(_._2)

// ys will be a Map[Int, Int]
val ys = Map("a" -> List(1 -> 11,1 -> 111), "b" -> List(2 -> 22,2 -> 222)).flatMap(_._2)

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Definition Classes IterableOps -> IterableOnceOps

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

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

Тип результирующей коллекции определяется типом ленивого списка. Например:

val xs = List(
           Set(1, 2, 3),
           Set(1, 2, 3)
         ).flatten
// xs == List(1, 2, 3, 1, 2, 3)

val ys = Set(
           List(1, 2, 3),
           List(3, 2, 1)
         ).flatten
// ys == Set(1, 2, 3)

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Definition Classes IterableOps -> IterableOnceOps

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

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

Type parameters
B

Тип накапливаемого значения.

Value parameters
op

Операция, выполняемая над последовательными элементами LazyList.

z

Начальное значение, передаваемое в функцию op.

Returns

Накопленное значение от последовательных применений op.

Definition Classes LinearSeqOps -> IterableOnceOps

Source
def force: LazyList[A]

Вычисляет все неопределённые элементы ленивого списка.

Этот метод обнаруживает циклы в ленивых списках и завершается после вычисления всех элементов цикла. Например:

val ring: LazyList[Int] = 1 #:: 2 #:: 3 #:: ring
ring.force
ring.toString

// prints
//
// LazyList(1, 2, 3, ...)

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

Returns

this

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

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

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

Обработка, применяемая к каждому элементу.

Примечание

Переопределено здесь как final, чтобы запустить оптимизацию хвостовой рекурсии, которая заменяет «это» на «хвост» на каждой итерации. Это абсолютно необходимо для того, чтобы позволить сборщику мусора собирать базовый LazyList по мере потребления элементов.

Эта функция заставит реализовать весь LazyList, если только f не выбросит исключение.

Классы определений LinearSeqOps -> IterableOnceOps

Source
override def grouped(size: Int): Iterator[LazyList[A]]

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

Возвращаемый этим методом итератор в основном сохраняет ленивость; один элемент перед итератором оценивается.

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

Source
override def head: A

Классы определений LinearSeqOps -> IterableOps

Source
override def intersect[B >: A](that: Seq[B]): LazyList[A]

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

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

Source
override def isEmpty: Boolean

Классы определений LinearSeqOps -> SeqOps -> IterableOnceOps

Source
override def iterableFactory: SeqFactory[LazyList]

Классы определений LinearSeq -> LinearSeq -> Seq -> Iterable -> Seq -> Iterable -> IterableOps

Source
override def iterator: Iterator[A]

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

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

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

Source
override def knownSize: Int

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

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

Source
def lazyAppendedAll[B >: A](suffix: => IterableOnce[B]): LazyList[B]

Ленивый список, полученный в результате конкатенации этого ленивого списка с аргументом ленивого списка.

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

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

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

Коллекция, добавляемая к этому ленивому списку

Возвращает

Ленивый список, содержащий элементы этого ленивого списка и объекта итератора.

Source
override def lazyZip[B](that: Iterable[B]): LazyZip2[A, B, LazyList[A]]

Аналогично 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)

Этот метод не особенно полезен для ленивого списка, так как zip уже сохраняет ленивость.

Возвращаемый этим методом collection.LazyZip2 сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

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

Source
override def map[B](f: A => B): LazyList[B]

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

Классы определений IterableOps -> IterableOnceOps

Source
override def padTo[B >: A](len: Int, elem: B): LazyList[B]

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

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

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

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

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

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

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

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

Пример:

val xs = `LazyList`(1, "one", 2, "two", 3, "three") partitionMap {
 case i: Int => Left(i)
 case s: String => Right(s)
}
// xs == (`LazyList`(1, 2, 3),
//        `LazyList`(one, two, three))

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

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

Source
override def patch[B >: A](from: Int, other: IterableOnce[B], replaced: Int): LazyList[B]

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

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

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

Исходный код
override def prepended[B >: A](elem: B): LazyList[B]

Копия ленивого списка с добавленным элементом в начало.

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

Пример:

scala> val x = List(1)
x: List[Int] = List(1)

scala> val y = 2 +: x
y: List[Int] = List(2, 1)

scala> println(x)
List(1)

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

Классы определения SeqOps

Исходный код
override def prependedAll[B >: A](prefix: IterableOnce[B]): LazyList[B]

Как и :++, возвращает новый список, содержащий элементы из левого операнда, за которым следуют элементы из правого операнда.

Он отличается от :++ тем, что правый операнд определяет тип результирующего списка, а не левый. Мемоническое правило: двоеточие находится со стороны нового типа списка.

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

Классы определения SeqOps

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

Специализация reduceLeft для LazyList, которая позволяет сборщику мусора собирать промежуточные результаты.

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

Тип накапливаемого значения.

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

Операция, выполняемая над последовательными элементами LazyList.

Возвращает

Накопленное значение от последовательных применений f.

Классы определения IterableOnceOps

Исходный код
override def reverse: LazyList[A]

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

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

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

Этот метод вычисляет все элементы коллекции.

Классы определения SeqOps

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

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

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

Классы определения IterableOps -> IterableOnceOps

Исходный код
override def slice(from: Int, until: Int): LazyList[A]

Выбирает интервал элементов. Результирующий ленивый список содержит все элементы x, удовлетворяющие условию:

from <= indexOf(x) < until

Этот метод не вычисляет ничего, пока над результатом не будет выполнена операция (например, вызов head или tail, или проверка на пустоту). Кроме того, он сохраняет ленивость для всех, кроме первых from элементов.

Классы определения IterableOps -> IterableOnceOps

Исходный код
override def sliding(size: Int, step: Int): Iterator[LazyList[A]]

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

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

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

Классы определения IterableOps

Исходный код
override def tail: LazyList[A]

Классы определения LinearSeqOps -> IterableOps

Исходный код
override def take(n: Int): LazyList[A]

Выбирает первые n элементов.

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

Классы определения IterableOps -> IterableOnceOps

Исходный код
override def takeRight(n: Int): LazyList[A]

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

Этот метод не вычисляет ничего, пока над результатом не будет выполнена операция (например, вызов head или tail, или проверка на пустоту).

Классы определения IterableOps

Исходный код
override def takeWhile(p: A => Boolean): LazyList[A]

Возвращает наибольший префикс элементов, удовлетворяющих предикату.

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

Классы определения IterableOps -> IterableOnceOps

Исходный код
override def tapEach[U](f: A => U): LazyList[A]

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

Классы определения IterableOps -> IterableOnceOps

Исходный код
override def toString(): String

Этот метод сохраняет ленивость; элементы оцениваются индивидуально по мере необходимости.

Возвращает

Строковое представление этой коллекции. Неопределённое состояние представлено как "<not computed>", а циклы — как "<cycle>". Примеры:

  • "LazyList(4, <not computed>)", непустой ленивый список;

  • "LazyList(1, 2, 3, <not computed>)", ленивый список с как минимум тремя элементами;

  • "LazyList(1, 2, 3, <cycle>)", бесконечный ленивый список, содержащий цикл с четвёртого элемента.

Классы определения Seq -> Function1 -> Iterable -> Any

Исходный код
override def transpose[B](implicit asIterable: A => Iterable[B]): LazyList[LazyList[B]]

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

Тип результирующей коллекции определяется статическим типом ленивого списка. Например:

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))

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

Этот метод вычисляет все элементы коллекции.

Классы определения IterableOps

Исходный код
override def unzip[A1, A2](implicit asPair: A => (A1, A2)): (LazyList[A1], LazyList[A2])

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

val xs = `LazyList`(
           (1, "one"),
           (2, "two"),
           (3, "three")).unzip
// xs == (`LazyList`(1, 2, 3),
//        `LazyList`(one, two, three))

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Классы-определения IterableOps

Исходный код
override def unzip3[A1, A2, A3](implicit asTriple: A => (A1, A2, A3)): (LazyList[A1], LazyList[A2], LazyList[A3])

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

val xs = `LazyList`(
           (1, "one", '1'),
           (2, "two", '2'),
           (3, "three", '3')).unzip3
// xs == (`LazyList`(1, 2, 3),
//        `LazyList`(one, two, three),
//        `LazyList`(1, 2, 3))

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Классы-определения IterableOps

Исходный код
override def updated[B >: A](index: Int, elem: B): LazyList[B]

Копия этого ленивого списка с одним заменённым элементом.

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Классы-определения SeqOps

Исходный код
override def withFilter(p: A => Boolean): WithFilter[A, LazyList]

Фильтр, который позволяет GC головы ленивого списка во время обработки.

Этот метод не особенно полезен для ленивого списка, так как метод filter уже сохраняет ленивость.

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

Классы-определения IterableOps

Исходный код
override def zip[B](that: IterableOnce[B]): LazyList[(A, B)]

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Классы-определения IterableOps

Исходный код
override def zipAll[A1 >: A, B](that: Iterable[B], thisElem: A1, thatElem: B): LazyList[(A1, B)]

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

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Классы-определения IterableOps

Исходный код
override def zipWithIndex: LazyList[(A, Int)]

Объединяет этот ленивый список с его индексами.

Этот метод сохраняет ленивость; элементы оцениваются индивидуально только по мере необходимости.

Классы-определения IterableOps -> IterableOnceOps

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

Исходный код@inline
final def ++[B >: A](suffix: IterableOnce[B]): LazyList[B]

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

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

Исходный код@inline
final override def ++:[B >: A](prefix: IterableOnce[B]): LazyList[B]

Псевдоним для prependedAll.

Классы-определения SeqOps -> IterableOps
Наследованно от SeqOps

Исходный код@inline
final def +:[B >: A](elem: B): LazyList[B]

Псевдоним для prepended.

Обратите внимание, что операторы с окончанием :- являются правоассоциативными (см. пример). Мемоническое правило для +: против :+: двоеточие ставится со стороны коллекции.

Наследованно от SeqOps

Исходный код@inline
final def :+[B >: A](elem: B): LazyList[B]

Псевдоним для appended.

Обратите внимание, что операторы с окончанием :- являются правоассоциативными (см. пример). Мемоническое правило для +: против :+: двоеточие ставится со стороны коллекции.

Наследованно от SeqOps

Исходный код@inline
final def :++[B >: A](suffix: IterableOnce[B]): LazyList[B]

Псевдоним для appendedAll.

Наследованно от SeqOps

Исходный код@inline
final def addString(b: StringBuilder): 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

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

Возвращает

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

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

Исходный код@inline
final def addString(b: StringBuilder, sep: String): 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

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

sep

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

Возвращает

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

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

Исходный код
def andThen[C](k: PartialFunction[A, C]): PartialFunction[Int, C]

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

Обратите внимание, что вызов isDefinedAt на результирующей частичной функции может применить первую частичную функцию и выполнить её побочное действие. Для повышения эффективности рекомендуется вызывать applyOrElse вместо isDefinedAt или apply.

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

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

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

функция преобразования

Возвращает

частичная функция с областью определения этой частичной функции, суженной другими частичными функциями, которая отображает аргументы x в k(this(x)).

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

Источник
override def andThen[C](k: A => C): PartialFunction[Int, C]

Компонует эту частичную функцию с функцией преобразования, которая применяется к результатам этой частичной функции.

Если тип функции во время выполнения является PartialFunction, то используется другой метод andThen (обратите внимание на его предостережения).

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

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

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

функция преобразования

Возвращает

частичная функция с областью определения этой частичной функции, возможно, суженной указанной функцией, которая отображает аргументы x в k(this(x)).

Классы определения PartialFunction -> Function1
Унаследовано от PartialFunction

Источник@throws(scala.throws.$lessinit$greater$default$1[scala.IndexOutOfBoundsException])
override def apply(n: Int): A

Классы определения LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

Источник
def applyOrElse[A1 <: Int, B1 >: A](x: A1, default: A1 => B1): B1

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

Обратите внимание, что выражение pf.applyOrElse(x, default) эквивалентно

if(pf isDefinedAt x) pf(x) else default(x)

за исключением того, что метод applyOrElse может быть реализован более эффективно. Для всех частичных функций-литералов компилятор генерирует реализацию applyOrElse, которая избегает двойного вычисления сопоставителей шаблонов и условий. Это делает applyOrElse основой для эффективной реализации многих операций и сценариев, таких как:

- комбинирование частичных функций в цепочки orElse/andThen не приводит к чрезмерному вычислению apply/isDefinedAt - lift и unlift не вычисляют исходные функции дважды при каждом вызове - runWith позволяет эффективно комбинировать частичные функции с условными действиями

Для классов частичных функций, не являющихся литералами, с ненулевой функцией isDefinedAt, рекомендуется переопределить applyOrElse пользовательской реализацией, которая избегает двойного вычисления isDefinedAt. Это может привести к лучшей производительности и более предсказуемому поведению в отношении побочных эффектов.

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

функция по умолчанию

x

аргумент функции

Возвращает

результат применения этой функции или функции по умолчанию.

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

Источник
def canEqual(that: Any): Boolean

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

Источник
def combinations(n: Int): Iterator[LazyList[A]]

Итерируется по комбинациям. _Комбинация_ длины n — это подпоследовательность исходной последовательности, элементы которой взяты в порядке. Таким образом, "xy" и "yy" — обе комбинации длины 2 из "xyy", но "yx" — нет. Если существует более одного способа сгенерировать одну и ту же подпоследовательность, будет возвращена только одна.

Например, "xyyy" имеет три различных способа сгенерировать "xy", в зависимости от того, какой первый, второй или третий "y" выбран. Однако, поскольку все они идентичны, будет выбран только один. Какой из трех будет взят, является реализационным деталью, которая не определена.

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

Возвращает

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

Пример

"abbbc".combinations(2) = Iterator(ab, ac, bb, bc)

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

Источник
def compose[R](k: PartialFunction[R, Int]): PartialFunction[R, A]

Компонует другую частичную функцию k с этой частичной функцией, так что эта частичная функция применяется к результатам k.

Обратите внимание, что вызов isDefinedAt на результирующей частичной функции может применить первую частичную функцию и выполнить ее побочный эффект. Для повышения эффективности рекомендуется использовать applyOrElse вместо isDefinedAt или apply.

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

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

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

функция преобразования

Возвращает

частичная функция с областью определения другой частичной функции, суженной этой частичной функцией, которая отображает аргументы x в this(k(x)).

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

Источник@unspecialized
def compose[A](g: A => Int): A => A

Компонует две реализации Function1 в новую Function1, применяя эту функцию последней.

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

тип, к которому можно применить функцию g

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

функция A => T1

Возвращает

новая функция f такая, что f(x) == apply(g(x))

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

Источник@inline
final override def concat[B >: A](suffix: IterableOnce[B]): LazyList[B]

Классы определения SeqOps -> IterableOps
Унаследовано от SeqOps

Источник
override def contains[A1 >: A](elem: A1): Boolean

Классы определения LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

Источник
def containsSlice[B >: A](that: Seq[B]): Boolean

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

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

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

тестируемая последовательность

Возвращает

true если эта последовательность содержит срез с теми же элементами, что и that, иначе false.

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

Источник
def copyToArray[B >: A](xs: Массив[B], start: Целое, len: Целое): Целое

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

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

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

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

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

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

максимальное количество копируемых элементов.

start

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

xs

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

Возвращает

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

Примечание

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

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

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

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

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

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

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

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

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

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

xs

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

Возвращает

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

Примечание

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

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

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

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

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

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

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

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

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

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

Возвращает

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

Примечание

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

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

Источник
def corresponds[B](that: IterableOnce[B])(p: (A, B) => Булево): Булево

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

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

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

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

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

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

that

другой набор

Возвращает

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

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

Источник
def corresponds[B](that: Последовательность[B])(p: (A, B) => Булево): Булево

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

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

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

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

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

that

другая последовательность

Возвращает

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

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

Исходный код
def count(p: A => Boolean): Int

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

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

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

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

Возвращает

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

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

Исходный код
def distinct: LazyList[A]

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

Возвращает

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

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

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

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

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

тип элементов после преобразования с помощью f

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

функция преобразования, результат которой используется для определения уникальности каждого элемента

Возвращает

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

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

Исходный код
def elementWise: ElementWiseExtractor[Int, A]

Возвращает объект извлекателя с методом unapplySeq, который извлекает каждый элемент данных последовательности.

Пример
val firstChar: String => Option[Char] = _.headOption
Seq("foo", "bar", "baz") match {
  case firstChar.unlift.elementWise(c0, c1, c2) =>
    println(s"$c0, $c1, $c2") // Output: f, b, b
}
Унаследовано от PartialFunction

Исходный код
override def empty: LazyList[A]

Классы-предки IterableFactoryDefaults -> IterableOps
Унаследовано от IterableFactoryDefaults

Исходный код
def endsWith[B >: A](that: Iterable[B]): Boolean

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

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

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

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

Возвращает

true если у этой последовательности есть that в качестве суффикса, false в противном случае.

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

Исходный код
override def equals(o: Any): Boolean

Классы определений Seq -> Equals -> Any
Унаследовано от Seq

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

Классы определений LinearSeqOps -> IterableOnceOps
Унаследовано от LinearSeqOps

Исходный код
override def findLast(p: A => Boolean): Option[A]

Классы определений LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

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

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

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

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

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

параметр типа для бинарного оператора, надтипом A.

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

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

z

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

Возвращает

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

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

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

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

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

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

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

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

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

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

z

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

Возвращает

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

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

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

Классы определений LinearSeqOps -> IterableOnceOps
Унаследовано от LinearSeqOps

Исходный код
protected def fromSpecific(coll: IterableOnce[A]): LazyList[A]

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

Исходный код
def groupBy[K](f: A => K): Map[K, LazyList[A]]

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

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

Параметры типа
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, LazyList[B]]

Разделяет эту итерируемую коллекцию на карту итерируемых коллекций согласно функции дискриминатора 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]

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

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

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

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

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

Исходный код
override def hashCode(): Int

Классы определений Seq -> Any
Унаследовано от Seq

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

Классы определений LinearSeqOps -> IterableOps
Унаследовано от LinearSeqOps

Исходный код@deprecatedOverriding("Override indexOf(elem, from) instead - indexOf(elem) calls indexOf(elem, 0)", "2.13.0")
def indexOf[B >: A](elem: B): Int

Находит индекс первого вхождения некоторого значения в этой последовательности.

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

тип элемента elem.

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

значение элемента, который нужно найти.

Возвращает

индекс >= 0 первого элемента этой последовательности, равного (как определяется ==) elem, или -1, если такого элемента нет.

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

Source
def indexOf[B >: A](elem: B, from: Int): Int

Находит индекс первого вхождения некоторого значения в этой последовательности после или на некотором начальном индексе.

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

тип элемента elem.

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

значение элемента, который нужно найти.

from

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

Возвращает

индекс >= from первого элемента этой последовательности, равного (как определяется ==) elem, или -1, если такого элемента нет.

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

Source@deprecatedOverriding("Override indexOfSlice(that, from) instead - indexOfSlice(that) calls indexOfSlice(that, 0)", "2.13.0")
def indexOfSlice[B >: A](that: Seq[B]): Int

Находит первый индекс, где эта последовательность содержит заданную последовательность как срез.

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

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

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

Возвращает

первый индекс >= 0 такой, что элементы этой последовательности, начиная с этого индекса, соответствуют элементам последовательности that, или -1, если такой подпоследовательности не существует.

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

Source
def indexOfSlice[B >: A](that: Seq[B], from: Int): Int

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

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

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

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

that

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

Возвращает

первый индекс >= from такой, что элементы этой последовательности, начиная с этого индекса, соответствуют элементам последовательности that, или -1 если такой подпоследовательности не существует.

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

Source
override def indexWhere(p: A => Boolean, from: Int): Int

Классы-родители LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

Source@deprecatedOverriding("Override indexWhere(p, from) instead - indexWhere(p) calls indexWhere(p, 0)", "2.13.0")
def indexWhere(p: A => Boolean): Int

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

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

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

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

Возвращает

индекс >= 0 первого элемента этой последовательности, удовлетворяющего предикату p, или -1, если такого элемента нет.

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

Source
def indices: Range

Создаёт диапазон всех индексов этой последовательности.

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

Возвращает

значение Range от 0 до значения, на единицу меньшего, чем длина этой последовательности.

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

Source
def init: LazyList[A]

Начальная часть коллекции без её последнего элемента.

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

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

Source
def inits: Iterator[LazyList[A]]

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

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

Возвращает

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

Пример

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

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

Source
override def isDefinedAt(x: Int): Boolean

Классы-предки LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

Source
override def isTraversableAgain: Boolean

Классы-предки IterableOps -> IterableOnceOps
Унаследовано от IterableOps

Source
override def last: A

Классы-предки LinearSeqOps -> IterableOps
Унаследовано от LinearSeqOps

Source
def lastIndexOf[B >: A](elem: B, end: Int): Int

Находит индекс последнего вхождения некоторого значения в этой последовательности до или на заданном индексе.

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

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

тип элемента elem.

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

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

end

конечный индекс.

Возвращает

индекс <= end последнего элемента этой последовательности, который равен (как определено ==) elem, или -1, если такового нет.

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

Source@deprecatedOverriding("Override lastIndexOfSlice(that, end) instead - lastIndexOfSlice(that) calls lastIndexOfSlice(that, Int.MaxValue)", "2.13.0")
def lastIndexOfSlice[B >: A](that: Seq[B]): Int

Находит последний индекс, где эта последовательность содержит заданную последовательность как срез.

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

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

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

Возвращает

последний индекс, такой что элементы этой последовательности, начиная с этого индекса, соответствуют элементам последовательности that, или -1, если такой подпоследовательности не существует.

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

Источник
def lastIndexOfSlice[B >: A](that: Seq[B], end: Int): Int

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

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

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

конечный индекс

that

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

Возвращает

последний индекс <= end такой, что элементы этой последовательности, начиная с этого индекса, соответствуют элементам последовательности that, или -1, если такой подпоследовательности не существует.

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

Источник
override def lastIndexWhere(p: A => Boolean, end: Int): Int

Классы определения LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

Источник@deprecatedOverriding("Override lastIndexWhere(p, end) instead - lastIndexWhere(p) calls lastIndexWhere(p, Int.MaxValue)", "2.13.0")
def lastIndexWhere(p: A => Boolean): Int

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

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

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

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

Возвращает

индекс последнего элемента этой последовательности, удовлетворяющего предикату p, или -1, если такового нет.

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

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

Возвращает необязательный последний элемент.

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

Возвращает

последний элемент этой итерационной коллекции$, если она непустая, None если она пустая.

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

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

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

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

Классы определения LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

Источник
override def lengthCompare(len: Int): Int

Классы определения LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

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

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

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

this.lengthIs < len     // this.lengthCompare(len) < 0
this.lengthIs <= len    // this.lengthCompare(len) <= 0
this.lengthIs == len    // this.lengthCompare(len) == 0
this.lengthIs != len    // this.lengthCompare(len) != 0
this.lengthIs >= len    // this.lengthCompare(len) >= 0
this.lengthIs > len     // this.lengthCompare(len) > 0
Унаследовано от SeqOps

Источник
def lift: Int => Option[A]

Преобразует эту частичную функцию в обычную функцию, возвращающую необязательный результат.

Возвращает

функция, которая принимает аргумент x в Some(this(x)) если this определена для x, и в None в противном случае.

См. также

Function.unlift

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

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

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

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

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

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

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

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

Возвращает

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

Исключения
UnsupportedOperationException

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

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

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

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

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

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

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

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

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

f

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

Возвращает

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

Исключения
UnsupportedOperationException

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

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

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

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

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

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

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

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

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

f

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

Возвращает

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

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

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

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

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

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

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

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

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

Возвращает

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

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

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

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

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

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

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

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

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

Возвращает

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

Исключения
UnsupportedOperationException

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

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

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

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

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

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

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

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

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

f

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

Возвращает

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

Исключения
UnsupportedOperationException

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

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

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

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

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

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

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

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

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

f

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

Возвращает

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

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

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

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

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

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

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

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

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

Возвращает

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

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

Источник@inline
final def mkString: String

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

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

END_OF_DOCUMENT_MARKER
Возвращает

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

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

Источник@inline
final def mkString(sep: String): String

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

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

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

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

Возвращает

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

Пример

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

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

Источник
final def mkString(start: String, sep: String, end: String): String

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

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

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

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

sep

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

start

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

Возвращает

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

Пример

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

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

Источник
protected def newSpecificBuilder: Builder[A, LazyList[A]]

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

Источник@deprecatedOverriding("nonEmpty is defined as !isEmpty; override isEmpty instead", "2.13.0")
def nonEmpty: Boolean

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

Возвращает

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

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

Источник
def orElse[A1 <: Int, B1 >: A](that: PartialFunction[A1, B1]): PartialFunction[A1, B1]

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

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

тип аргумента резервной функции

B1

тип результата резервной функции

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

резервная функция

Возвращает

частичная функция, область определения которой является объединением областей определения этой частичной функции и that. Результирующая частичная функция принимает x к this(x), где this определена, и к that(x) в противном случае.

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

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

Итерируется по различным перестановкам.

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

Возвращает

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

Пример

"abb".permutations = Iterator(abb, bab, bba)

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

Источник
def product[B >: A](implicit num: Numeric[B]): B

Умножает элементы этого набора.

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

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

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

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

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

Возвращает

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

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

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

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

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

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

Параметр типа для бинарного оператора, надтипа A.

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

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

Возвращает

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

Исключения
UnsupportedOperationException

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

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

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

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

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

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

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

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

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

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

Возвращает

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

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

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

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

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

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

Параметр типа для бинарного оператора, надтипа A.

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

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

Возвращает

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

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

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

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

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

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

Параметры типа
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]

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

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

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

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

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

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

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

Возвращает

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

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

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

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

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

Примечание: xs.reverseIterator эквивалентно xs.reverse.iterator, но может быть более эффективным.

Возвращает

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

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

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

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

Источник
def runWith[U](action: A => U): Int => Boolean

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

Обратите внимание, что выражение pf.runWith(action)(x) эквивалентно

if(pf isDefinedAt x) { action(pf(x)); true } else false

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

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

функция действия

Возвращает

функция, которая отображает аргументы x в isDefinedAt(x). Результирующая функция выполняет action(this(x)) там, где this определено.

См. также

applyOrElse.

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

Источник
override def sameElements[B >: A](that: IterableOnce[B]): Boolean

Классы определений LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

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

Вычисляет префиксное сканирование элементов набора.

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

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

тип элементов результирующего набора

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

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

z

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

Возвращает

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

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

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

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

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

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

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

Пример:

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

тип элементов в результирующем наборе

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

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

z

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

Возвращает

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

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

Источник
def search[B >: A](elem: B, from: Int, to: Int)(implicit ord: Ordering[B]): SearchResult

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

Последовательность должна быть отсортирована с использованием того же Ordering перед вызовом; в противном случае результаты будут неопределёнными.

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

элемент, который нужно найти.

from

индекс, с которого начинается поиск.

ord

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

to

индекс, следующий за тем, где поиск заканчивается.

Возвращает

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

См. также

scala.collection.IndexedSeq

scala.math.Ordering

scala.collection.SeqOps, метод sorted

Примечание

если to <= from, пространство поиска пусто, и возвращается InsertionPoint в from

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

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

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

Набор должен быть отсортирован с использованием того же Ordering перед вызовом; в противном случае результаты будут неопределенными.

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

элемент, который нужно найти.

ord

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

Возвращает

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

См. также

scala.collection.IndexedSeq

scala.math.Ordering

scala.collection.SeqOps, метод sorted

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

Источник
override def segmentLength(p: A => Boolean, from: Int): Int

Классы-предки LinearSeqOps -> SeqOps
Унаследовано от LinearSeqOps

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

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

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

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

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

Возвращает

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

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

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

Классы-предки SeqOps -> IterableOnceOps
Унаследовано от SeqOps

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

Классы-предки SeqOps -> IterableOps
Унаследовано от SeqOps

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

Классы-предки SeqOps -> IterableOps
Унаследовано от SeqOps

Источник@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

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

Группирует элементы в блоки фиксированного размера, пропуская по ним "скользящее окно" (в отличие от разбиения их на части, как это делается в 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 sortBy[B](f: A => B)(implicit ord: Ordering[B]): LazyList[A]

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

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

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

Сортировка является стабильной. То есть элементы, которые равны (как определено ord.compare), появляются в отсортированной последовательности в том же порядке, что и в исходной.

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

целевой тип преобразования f, и тип, где определено упорядочение ord.

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

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

ord

упорядочение, предполагаемое в области B.

Возвращаемое значение

последовательность, состоящая из элементов этой последовательности, отсортированных в соответствии с порядком, где x < y если ord.lt(f(x), f(y)).

См. также

scala.math.Ordering

Пример
val words = "The quick brown fox jumped over the lazy dog".split(' ')
// this works because scala.Ordering will implicitly provide an Ordering[Tuple2[Int, Char]]
words.sortBy(x => (x.length, x.head))
res0: Array[String] = Array(The, dog, fox, the, lazy, over, brown, quick, jumped)
Унаследовано от SeqOps

Источник
def sortWith(lt: (A, A) => Boolean): LazyList[A]

Сортирует эту последовательность в соответствии с функцией сравнения.

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

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

Сортировка является стабильной. То есть элементы, которые равны (как определено lt), появляются в отсортированной последовательности в том же порядке, что и в исходной.

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

функция сравнения, которая проверяет, предшествует ли ее первый аргумент второму аргументу в желаемом порядке.

Возвращаемое значение

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

Пример
List("Steve", "Tom", "John", "Bob").sortWith(_.compareTo(_) < 0) =
List("Bob", "John", "Steve", "Tom")
Унаследовано от SeqOps

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

Сортирует эту последовательность в соответствии с Ordering.

Сортировка является стабильной. То есть элементы, которые равны (как определено ord.compare), появляются в отсортированной последовательности в том же порядке, что и в исходной.

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

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

Возвращаемое значение

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

См. также

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

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

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

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

Источник
override def splitAt(n: Int): (LazyList[A], LazyList[A])

Классы-родители IterableOps -> IterableOnceOps
Унаследовано от IterableOps

Источник
def startsWith[B >: A](that: IterableOnce[B], offset: Int): Boolean

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

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

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

индекс, где ищется последовательность.

that

тестируемая последовательность

Возвращаемое значение

true если последовательность that содержится в этой последовательности в индексе offset, иначе false.

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

Источник
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. Для Stepper, помеченных scala.collection.Stepper.EfficientSplit, преобразователи в scala.jdk.StreamConverters позволяют создавать параллельные потоки, тогда как обычные Stepper можно преобразовать только в последовательные потоки.

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

Источник
def sum[B >: A](implicit num: Numeric[B]): B

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

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

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

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

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

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

Возвращаемое значение

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

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

Источник
override def tails: Iterator[LazyList[A]]

Классы-родители LinearSeqOps -> IterableOps
Унаследовано от LinearSeqOps

Источник
def to[C1](factory: Factory[A, C1]): C1

При заданном фабрике коллекции factory, преобразовать эту коллекцию в соответствующее представление для текущего типа элемента A. Примеры использования:

xs.to(List) xs.to(ArrayBuffer) xs.to(BitSet) // для xs: Iterable[Int]

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

Источник
def toArray[B >: A : ClassTag]: Array[B]

Преобразовать коллекцию в массив.

Примечание реализации: НЕ вызывать Array.from из этого метода.

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

Источник@inline
final def toBuffer[B >: A]: Buffer[B]

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

Source
def toIndexedSeq: IndexedSeq[A]

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

Source
def toList: List[A]

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

Source
def toMap[K, V](implicit ev: A <:< (K, V)): Map[K, V]

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

Source
final override def toSeq: LazyList[A]

Классы-предки Seq -> IterableOnceOps
Унаследовано от Seq

Source
def toSet[B >: A]: Set[B]

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

Source
def toVector: Vector[A]

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

Source
def unapply(a: Int): Option[A]

Попытка извлечь B из A в выражении сопоставления с образцом.

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

Source
override def view: SeqView[A]

Классы-предки SeqOps -> IterableOps
Унаследовано от SeqOps

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/collection/immutable/LazyList.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API