ジェネレータ
とりえあえず,pythonの場合(他の言語はまだ調べてないからよく分からん)
今の認識は,「関数の任意の場所にセーブポイントを設置する」
注意:セーブポイントを設置しましょう
code:python
def f():
return 1 # end
return 2 # never reach
def g():
yield 1 # pause
yield 2 # pause
print(f()) # -> 1
print(f()) # -> 1
z = g()
print(next(z)) # -> 1
print(next(z)) # -> 2
print(g()) # これは止めた方が良さそう
ジェネレータをリスト内包表記的に記述する,「ジェネレータ式」というものもある
code:python
type(l) # -> list
g = (i for i in range(2)) # これは上のgと同じ動作をする
type(g) # -> generator