当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。