生成器
生成器是在塊中使用 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!