生成器
生成器是在块中使用 yield!
过程的特殊过程
g!() =
yield! 1
yield! 2
yield! 3
yield!
是在调用self!.yield!
的子程序块中定义的过程。和return
一样,它把传递给它的值作为返回值返回,但它具有保存block当前执行状态,再次调用时从头开始执行的特性
生成器既是过程又是迭代器; Python 生成器是一个创建迭代器的函数,而 Erg 直接迭代。过程本身通常不是可变对象(没有!
),但生成器是可变对象,因为它自己的内容可以随着每次执行而改变
# Generator!
g!: Generator!((), Int)
assert g!() == 1
assert g!() == 2
assert g!() == 3
Python 风格的生成器可以定义如下
make_g() = () =>
yield! 1
yield! 2
yield! 3
make_g: () => Generator!