當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Julia Iterators.Stateful用法及代碼示例


用法:

Stateful(itr)

有幾種不同的方式來考慮這個迭代器包裝器:

  1. 它提供了一個圍繞迭代器及其迭代狀態的可變包裝器。
  2. 它將 iterator-like 抽象轉換為類似於 Channel 的抽象。
  3. 它是一個迭代器,隻要生成一個項目,它就會變異成為自己的休息迭代器。

Stateful 提供常規迭代器接口。與其他可變迭代器(例如 Channel )一樣,如果提前停止迭代(例如通過 for 循環中的 break ),則可以通過繼續迭代同一迭代器對象(在相反,不可變的迭代器將從頭開始)。

例子

julia> a = Iterators.Stateful("abcdef");

julia> isempty(a)
false

julia> popfirst!(a)
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)

julia> collect(Iterators.take(a, 3))
3-element Vector{Char}:
 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
 'd': ASCII/Unicode U+0064 (category Ll: Letter, lowercase)

julia> collect(a)
2-element Vector{Char}:
 'e': ASCII/Unicode U+0065 (category Ll: Letter, lowercase)
 'f': ASCII/Unicode U+0066 (category Ll: Letter, lowercase)

julia> Iterators.reset!(a); popfirst!(a)
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)

julia> Iterators.reset!(a, "hello"); popfirst!(a)
'h': ASCII/Unicode U+0068 (category Ll: Letter, lowercase)
julia> a = Iterators.Stateful([1,1,1,2,3,4]);

julia> for x in a; x == 1 || break; end

julia> peek(a)
3

julia> sum(a) # Sum the remaining elements
7

相關用法


注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Base.Iterators.Stateful — Type。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。