Spec-Zone.ru › Scala 3.1

Трейт scala.collection.Stepper

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

Трейт Stepper[@specialized(Double, Int, Long) +A]

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

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

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

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

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

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

Надтипы
класс 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.1.1/scala/collection/Stepper.html

Spec-Zone.ru

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