Итераторы
Итераторы
iterator items[T: not char](a: openArray[T]): lent2 T {...}{.inline.}- Перебирает каждый элемент
a. Исходный код Изменить iterator items[T: char](a: openArray[T]): T {...}{.inline.}- Перебирает каждый элемент
a. Исходный код Изменить iterator mitems[T](a: var openArray[T]): var T {...}{.inline.}- Перебирает каждый элемент
a, позволяя вам изменить возвращаемое значение. Исходный код Изменить iterator items[IX, T](a: array[IX, T]): T {...}{.inline.}- Перебирает каждый элемент
a. Исходный код Изменить iterator mitems[IX, T](a: var array[IX, T]): var T {...}{.inline.}- Перебирает каждый элемент
a, позволяя вам изменить возвращаемое значение. Исходный код Изменить iterator items[T](a: set[T]): T {...}{.inline.}- Перебирает каждый элемент
a.itemsперебирает только элементы, которые реально присутствуют в множестве (а не те, которые множество способно содержать). Исходный код Изменить iterator items(a: cstring): char {...}{.inline, raises: [], tags: [].}- Перебирает каждый элемент
a. Исходный код Изменить iterator mitems(a: var cstring): var char {...}{.inline, raises: [], tags: [].}- Перебирает каждый элемент
a, позволяя вам изменить возвращаемое значение. Исходный код Изменить iterator items(E: typedesc[enum]): E:type
- Перебирает значения перечисления
E. Исходный код Изменить iterator items[T](s: HSlice[T, T]): T
- Перебирает срез
s, возвращая каждое значение междуs.aиs.b(включительно). Исходный код Изменить iterator pairs[T](a: openArray[T]): tuple[key: int, val: T] {...}{.inline.}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары. Исходный код Изменить iterator mpairs[T](a: var openArray[T]): tuple[key: int, val: var T] {...}{.inline.}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары.a[index]может быть изменён. Исходный код Изменить iterator pairs[IX, T](a: array[IX, T]): tuple[key: IX, val: T] {...}{.inline.}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары. Исходный код Изменить iterator mpairs[IX, T](a: var array[IX, T]): tuple[key: IX, val: var T] {...}{.inline.}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары.a[index]может быть изменён. Исходный код Изменить iterator pairs[T](a: seq[T]): tuple[key: int, val: T] {...}{.inline.}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары. Исходный код Изменить iterator mpairs[T](a: var seq[T]): tuple[key: int, val: var T] {...}{.inline.}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары.a[index]может быть изменён. Исходный код Изменить iterator pairs(a: string): tuple[key: int, val: char] {...}{.inline, raises: [], tags: [].}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары. Исходный код Изменить iterator mpairs(a: var string): tuple[key: int, val: var char] {...}{.inline, raises: [], tags: [].}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары.a[index]может быть изменён. Исходный код Изменить iterator pairs(a: cstring): tuple[key: int, val: char] {...}{.inline, raises: [], tags: [].}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары. Исходный код Изменить iterator mpairs(a: var cstring): tuple[key: int, val: var char] {...}{.inline, raises: [], tags: [].}- Перебирает каждый элемент
a. Возвращает(index, a[index])пары.a[index]может быть изменён. Исходный код Изменить iterator items[T](a: seq[T]): lent2 T {...}{.inline.}- Перебирает каждый элемент
a. Исходный код Изменить iterator mitems[T](a: var seq[T]): var T {...}{.inline.}- Перебирает каждый элемент
a, позволяя вам изменить возвращаемое значение. Исходный код Изменить iterator items(a: string): char {...}{.inline, raises: [], tags: [].}- Перебирает каждый элемент
a. Исходный код Изменить iterator mitems(a: var string): var char {...}{.inline, raises: [], tags: [].}- Перебирает каждый элемент
a, позволяя вам изменить возвращаемое значение. Исходный код Изменить iterator fields[T: tuple | object](x: T): RootObj {...}{.magic: "Fields", noSideEffect.}-
Перебирает каждое поле
x.Предупреждение: Это фактически преобразует цикл 'for' и раскручивает цикл. Текущая реализация также содержит ошибку, влияющую на привязку символов в теле цикла.
Пример:
var t = (1, "foo") for v in fields(t): v = default(type(v)) doAssert t == (0, "")
Исходный код Изменить iterator fields[S: tuple | object; T: tuple | object](x: S; y: T): tuple[ key: string, val: RootObj] {...}{.magic: "Fields", noSideEffect.}-
Перебирает каждое поле
xиy.Предупреждение: Это фактически преобразует цикл 'for' и раскручивает цикл. Текущая реализация также содержит ошибку, влияющую на привязку символов в теле цикла.
Пример:
var t1 = (1, "foo") var t2 = default(type(t1)) for v1, v2 in fields(t1, t2): v2 = v1 doAssert t1 == t2
Исходный код Изменить iterator fieldPairs[T: tuple | object](x: T): tuple[key: string, val: RootObj] {...}{. magic: "FieldPairs", noSideEffect.}-
Перебирает каждое поле
x, возвращая его имя и значение.При переборе объектов с различными типами полей необходимо использовать
whenвремени компиляции вместоifвремени выполнения для выбора кода, который необходимо выполнить для каждого типа. Для сравнения используйте оператор is. Другой способ сделать это безwhen- это возложить задачу выбора подходящего кода на вторичную процедуру, которую вы перегружаете для каждого типа поля и передаётеvalueв неё.Предупреждение: Это фактически преобразует цикл 'for' и раскручивает цикл. Текущая реализация также содержит ошибку, влияющую на привязку символов в теле цикла.
Пример:
type Custom = object foo: string bar: bool proc `$`(x: Custom): string = result = "Custom:" for name, value in x.fieldPairs: when value is bool: result.add("\n\t" & name & " is " & $value) else: result.add("\n\t" & name & " '" & value & "'")Исходный код Изменить iterator fieldPairs[S: tuple | object; T: tuple | object](x: S; y: T): tuple[ key: string, a, b: RootObj] {...}{.magic: "FieldPairs", noSideEffect.}-
Перебирает каждое поле
xиy.Предупреждение: Это фактически преобразует цикл 'for' и раскручивает цикл. Текущая реализация также содержит ошибку, влияющую на привязку символов в теле цикла.
Пример:
type Foo = object x1: int x2: string var a1 = Foo(x1: 12, x2: "abc") var a2: Foo for name, v1, v2 in fieldPairs(a1, a2): when name == "x2": v2 = v1 doAssert a2 == Foo(x1: 0, x2: "abc")
Исходный код Изменить
© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/iterators.html