Spec-Zone.ru › Scala 3.2

Трейт Stepper.Stepper

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

трейт Stepper[+A]

Степеры предназначены для создания Java потоков над Scala коллекциями, см. scala.jdk.StreamConverters. Помимо этого использования, они позволяют итерироваться по коллекциям, содержащим необработанные примитивы (например, Array[Int]) без упаковки элементов.

Степеры имеют интерфейс, похожий на итератор, с методами hasStep и nextStep(). Различие с итераторами — и причина, по которой Stepper не является подтипом Iterator — заключается в том, что существуют специализированные варианты Stepper для Int, Long и Double (IntStepper и т. д.). Это позволяет итерироваться по коллекциям, содержащим необработанные примитивы (например, массивы, scala.jdk.Accumulator), без упаковки элементов.

Выбор типов примитивов (Int, Long и Double) соответствует специализированным вариантам Java потоков (java.util.stream.Stream, java.util.stream.IntStream и т. д.) и соответствующим Java разделителям (java.util.Spliterator, java.util.Spliterator.OfInt и т. д.).

Степеры можно преобразовать в Scala итераторы, Java итераторы и Java разделители. Примитивные степеры преобразуются в соответствующие примитивные Java итераторы и разделители.

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

тип элемента степера

Надтипы
класс Object
трейт Matchable
класс Any
Известные подтипы
трейт AnyStepper[A]
трейт DoubleStepper
трейт IntStepper
трейт LongStepper

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

Исходный код
def characteristics: Int

Возвращает набор характеристик этого степера и его элементов. См. метод characteristics в java.util.Spliterator.

Исходный код
def estimateSize: Long

Возвращает оценку количества элементов этого степера или Long.MaxValue. См. метод estimateSize в java.util.Spliterator.

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

Проверка наличия элемента.

Исходный код
def javaIterator[B >: A]: Iterator[_]

Возвращает Java java.util.Iterator, соответствующий этому степеру.

Обратите внимание, что возвращаемый тип — Iterator[_] вместо Iterator[A], чтобы разрешить возврат java.util.PrimitiveIterator.OfInt (который является Iterator[Integer]) в подклассе IntStepper (который является Stepper[Int]).

Исходный код
def nextStep(): A

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

Исходный код
def spliterator[B >: A]: Spliterator[_]

Возвращает java.util.Spliterator, соответствующий этому степеру.

Обратите внимание, что возвращаемый тип — Spliterator[_] вместо Spliterator[A], чтобы разрешить возврат java.util.Spliterator.OfInt (который является Spliterator[Integer]) в подклассе IntStepper (который является Stepper[Int]).

Исходный код
def trySplit(): Stepper[A]

Разделить этот степер, если применимо. Элементы текущего степера распределяются между полученным степером и текущим степером.

Может вернуть null, в этом случае текущий степер возвращает те же элементы, что и раньше.

См. метод trySplit в java.util.Spliterator.

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

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

Возвращает Iterator, соответствующий этому степеру. Обратите внимание, что итераторы, соответствующие примитивным степерам, упаковывают элементы.

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/collection/Stepper.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API