Spec-Zone.ru › Pony

Iter[A: A]

[Source]

Класс-обёртка, содержащий методы для модификации итераторов.

class ref Iter[A: A] is
  Iterator[A] ref

Реализует

  • Итератор[A] ref

Конструкторы

create

[Source]

new ref create(
  iter: Iterator[A] ref)
: Iter[A] ref^

Параметры

  • iter: Итератор[A] ref

Возвращает

  • Iter[A] ref^

maybe

[Source]

new ref maybe(
  value: (A | None val))
: Iter[A] ref^

Параметры

  • value: (A | None val)

Возвращает

  • Iter[A] ref^

chain

[Source]

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

Пример

let xs = [as I64: 1; 2].values()
let ys = [as I64: 3; 4].values()

Iter[I64].chain([xs; ys].values())

1 2 3 4

new ref chain(
  outer_iterator: Iterator[Iterator[A] ref] ref)
: Iter[A] ref^

Параметры

  • outer_iterator: Итератор[Итератор[A] ref] ref

Возвращает

  • Iter[A] ref^

repeat_value

[Source]

Создаёт итератор, который бесконечно возвращает заданное значение.

Пример

Iter[U32].repeat_value(7)

7 7 7 7 7 7 7 7 7 ...

new ref repeat_value(
  value: A)
: Iter[A] ref^

Параметры

  • value: A

Возвращает

  • Iter[A] ref^

Публичные функции

has_next

[Source]

fun ref has_next()
: Bool val

Возвращает

  • Bool val

next

[Source]

fun ref next()
: A ?

Возвращает

  • A ?

next_or

[Source]

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

Пример

let x: (U64 | None) = 42
Iter[U64].maybe(x).next_or(0)

42

fun ref next_or(
  default: A)
: A

Параметры

  • default: A

Возвращает

  • A

map_stateful[B: B]

[Source]

Позволяет выполнять трансформацию элементов из итератора с состоянием, аналогично map.

fun ref map_stateful[B: B](
  f: {ref(A!): B^ ?}[A, B] ref)
: Iter[B] ref^

Параметры

  • f: {ref(A!): B^ ?}[A, B] ref

Возвращает

  • Iter[B] ref^

filter_stateful

[Source]

Позволяет фильтровать элементы на основе адаптера с состоянием, аналогично filter.

fun ref filter_stateful(
  f: {ref(A!): Bool ?}[A] ref)
: Iter[A!] ref^

Параметры

  • f: {ref(A!): Bool ?}[A] ref

Возвращает

  • Iter[A!] ref^

filter_map_stateful[B: B]

[Source]

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

fun ref filter_map_stateful[B: B](
  f: {ref(A!): (B^ | None) ?}[A, B] ref)
: Iter[B] ref^

Параметры

  • f: {ref(A!): (B^ | None) ?}[A, B] ref

Возвращает

  • Iter[B] ref^

all

[Source]

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

Примеры

Iter[I64]([2; 4; 6].values())
  .all({(x) => (x % 2) == 0 })

true

Iter[I64]([2; 3; 4].values())
  .all({(x) => (x % 2) == 0 })

false

fun ref all(
  f: {(A!): Bool ?}[A] box)
: Bool val

Параметры

  • f: {(A!): Bool ?}[A] box

Возвращает

  • Bool val

any

[Source]

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

Примеры

Iter[I64]([2; 4; 6].values())
  .any({(I64) => (x % 2) == 1 })

false

Iter[I64]([2; 3; 4].values())
  .any({(I64) => (x % 2) == 1 })

true

fun ref any(
  f: {(A!): Bool ?}[A] box)
: Bool val

Параметры

  • f: {(A!): Bool ?}[A] box

Возвращает

  • Bool val

collect[optional B: Последовательность[A!] ref]

[Source]

Добавляет каждое значение из итератора в коллекцию coll.

Пример

Iter[I64]([1; 2; 3].values())
  .collect(Array[I64](3))

[1, 2, 3]

fun ref collect[optional B: Seq[A!] ref](
  coll: B)
: B^

Параметры

  • coll: B

Возвращает

  • B^

count

[Source]

Возвращает количество значений в итераторе.

Пример

Iter[I64]([1; 2; 3].values())
  .count()

3

fun ref count()
: USize val

Возвращает

  • USize val

cycle

[Source]

Бесконечно циклически возвращает значения из итератора.

ПРЕДУПРЕЖДЕНИЕ: Значения из исходного итератора кешируются, поэтому входной итератор должен быть конечным.

Пример

Iter[I64]([1; 2; 3].values())
  .cycle()

1 2 3 1 2 3 1 2 3 ...

fun ref cycle()
: Iter[A!] ref^

Возвращает

  • Iter[A!] ref^

enum[optional B: (Вещественный[B] val & (I8 val | I16 val | I32 val | I64 val | I128 val | ILong val | ISize val | U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val | F32 val | F64 val))]

[Source]

Итератор, который возвращает текущий счёт итерации, а также следующее значение из итератора.

Пример

Iter[I64]([1; 2; 3].values())
  .enum()

(0, 1) (1, 2) (2, 3)

fun ref enum[optional B: (Real[B] val & (I8 val | I16 val | I32 val | 
    I64 val | I128 val | ILong val | 
    ISize val | U8 val | U16 val | 
    U32 val | U64 val | U128 val | 
    ULong val | USize val | F32 val | 
    F64 val))]()
: Iter[(B , A)] ref^

Возвращает

  • Iter[(B , A)] ref^

filter

[Source]

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

Пример

Iter[I64]([1; 2; 3; 4; 5; 6].values())
  .filter({(x) => (x % 2) == 0 })

2 4 6

fun ref filter(
  f: {(A!): Bool ?}[A] box)
: Iter[A!] ref^

Параметры

  • f: {(A!): Bool ?}[A] box

Возвращает

  • Iter[A!] ref^

find

[Source]

Возвращает n-ое значение в итераторе, которое удовлетворяет предикату f.

Примеры

Iter[I64]([1; 2; 3].values())
  .find({(x) => (x % 2) == 0 })

2

Iter[I64]([1; 2; 3; 4].values())
  .find({(x) => (x % 2) == 0 }, 2)

4

fun ref find(
  f: {(A!): Bool ?}[A] box,
  n: USize val = 1)
: A! ?

Параметры

  • f: {(A!): Bool ?}[A] box
  • n: USize val = 1

Возвращает

  • A! ?

filter_map[B: B]

[Source]

Возвращает итератор, который применяет f к каждому элементу. Если None возвращается, итератор попробует снова, применив f к следующему элементу. В противном случае возвращается значение типа B.

Пример

Iter[I64]([as I64: 1; -2; 4; 7; -5])
  .filter_map[USize](
    {(i: I64): (USize | None) => if i >= 0 then i.usize() end })

1 4 7


```pony
fun ref filter_map[B: B](
  f: {(A!): (B^ | None) ?}[A, B] box)
: Iter[B] ref^

Параметры

  • f: {(A!): (B^ | None) ?}[A, B] box

Возвращает

  • Iter[B] ref^

flat_map[B: B]

[Source]

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

Пример

Iter[String](["alpha"; "beta"; "gamma"])
  .flat_map[U8]({(s: String): Iterator[U8] => s.values() })

a l p h a b e t a g a m m a

fun ref flat_map[B: B](
  f: {(A!): Iterator[B] ?}[A, B] box)
: Iter[B] ref^

Параметры

  • f: {(A!): Iterator[B] ?}[A, B] box

Возвращает

  • Iter[B] ref^

fold[B: B]

[Source]

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

Пример

Iter[I64]([1; 2; 3].values())
  .fold[I64](0, {(sum, x) => sum + x })

6

fun ref fold[B: B](
  acc: B,
  f: {(B, A!): B^}[A, B] box)
: B^

Параметры

  • acc: B
  • f: {(B, A!): B^}[A, B] box

Возвращает

  • B^

fold_partial[B: B]

[Source]

Частичная версия fold.

fun ref fold_partial[B: B](
  acc: B,
  f: {(B, A!): B^ ?}[A, B] box)
: B^ ?

Параметры

  • acc: B
  • f: {(B, A!): B^ ?}[A, B] box

Возвращает

  • B^ ?

[Источник]

Возвращает последнее значение итератора.

Пример

Iter[I64]([1; 2; 3].values())
  .last()

3

fun ref last()
: A ?

Возвращает

  • A ?

map[B: B]

[Источник]

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

Пример

Iter[I64]([1; 2; 3].values())
  .map[I64]({(x) => x * x })

1 4 9

fun ref map[B: B](
  f: {(A!): B^ ?}[A, B] box)
: Iter[B] ref^

Параметры

  • f: {(A!): B^ ?}[A, B] box

Возвращает

  • Iter[B] ref^

nth

[Источник]

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

Пример

Iter[I64]([1; 2; 3].values())
  .nth(2)

2

fun ref nth(
  n: USize val)
: A ?

Параметры

  • n: USize val

Возвращает

  • A ?

run

[Источник]

Перебирает значения итератора без цикла for. Функция on_error будет вызвана, если метод итератора has_next возвращает true, но его метод next вызывает ошибку.

Пример

Iter[I64]([1; 2; 3].values())
  .map[None]({(x) => env.out.print(x.string()) })
  .run()
1
2
3
fun ref run(
  on_error: {ref()}[A] ref = lambda)
: None val

Параметры

  • on_error: {ref()}[A] ref = lambda

Возвращает

  • None val

skip

[Источник]

Пропускает первые n значений итератора.

Пример

Iter[I64]([1; 2; 3; 4; 5; 6].values())
  .skip(3)

4 5 6

Iter[I64]([1; 2; 3].values())
  .skip(3)
  .has_next()

false

fun ref skip(
  n: USize val)
: Iter[A] ref^

Параметры

  • n: USize val

Возвращает

  • Iter[A] ref^

skip_while

[Источник]

Пропускает значения итератора, пока предикат f возвращает true.

Пример

Iter[I64]([1; 2; 3; 4; 5; 6].values())
  .skip_while({(x) => x < 4 })

4 5 6

fun ref skip_while(
  f: {(A!): Bool ?}[A] box)
: Iter[A!] ref^

Параметры

  • f: {(A!): Bool ?}[A] box

Возвращает

  • Iter[A!] ref^

take

[Источник]

Возвращает итератор для первых n элементов.

Пример

Iter[I64]([1; 2; 3; 4; 5; 6].values())
  .take(3)

1 2 3

fun ref take(
  n: USize val)
: Iter[A] ref^

Параметры

  • n: USize val

Возвращает

  • Iter[A] ref^

take_while

[Источник]

Возвращает итератор, который возвращает значения, пока предикат f возвращает true. Этот итератор прерывается в первый раз, когда f возвращает false или вызывает ошибку.

Пример

Iter[I64]([1; 2; 3; 4; 5; 6].values())
  .take_while({(x) => x < 4 })

1 2 3

fun ref take_while(
  f: {(A!): Bool ?}[A] box)
: Iter[A!] ref^

Параметры

  • f: {(A!): Bool ?}[A] box

Возвращает

  • Iter[A!] ref^

zip[B: B]

[Источник]

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

Пример

Iter[I64]([1; 2].values())
  .zip[I64]([3; 4].values())

(1, 3) (2, 4)

fun ref zip[B: B](
  i2: Iterator[B] ref)
: Iter[(A , B)] ref^

Параметры

  • i2: Iterator[B] ref

Возвращает

  • Iter[(A , B)] ref^

zip2[B: B, C: C]

[Источник]

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

fun ref zip2[B: B, C: C](
  i2: Iterator[B] ref,
  i3: Iterator[C] ref)
: Iter[(A , B , C)] ref^

Параметры

  • i2: Iterator[B] ref
  • i3: Iterator[C] ref

Возвращает

  • Iter[(A , B , C)] ref^

zip3[B: B, C: C, D: D]

[Источник]

Комбинирует четыре итератора так, что каждый вызов next() возвращает кортеж со следующим значением каждого из итераторов. Количество возвращаемых элементов — минимальное из количества элементов, возвращаемых итераторами.

fun ref zip3[B: B, C: C, D: D](
  i2: Iterator[B] ref,
  i3: Iterator[C] ref,
  i4: Iterator[D] ref)
: Iter[(A , B , C , D)] ref^

Параметры

  • i2: Iterator[B] ref
  • i3: Iterator[C] ref
  • i4: Iterator[D] ref

Возвращает

  • Iter[(A , B , C , D)] ref^

zip4[B: B, C: C, D: D, E: E]

[Источник]

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

fun ref zip4[B: B, C: C, D: D, E: E](
  i2: Iterator[B] ref,
  i3: Iterator[C] ref,
  i4: Iterator[D] ref,
  i5: Iterator[E] ref)
: Iter[(A , B , C , D , E)] ref^

Параметры

  • i2: Iterator[B] ref
  • i3: Iterator[C] ref
  • i4: Iterator[D] ref
  • i5: Iterator[E] ref

Возвращает

  • Iter[(A , B , C , D , E)] ref^

© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/itertools-Iter

Spec-Zone.ru

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