カスタマイズしたループ動作を実装しています。ループに入るとき、すべてのループ開始時、すべてのループ終了時、およびループ領域を終了するときに起こることが必要です。これまでのところ、これは、Python(2.7)で美しくシンプルです:カスタムイテレータまたはジェネレータがブレーク後にクローズアウトを実行する
def my_for(loop_iterable):
enter_loop()
for i in loop_iterable:
loop_start()
yield i
loop_end()
exit_loop()
for i in my_for([1, 2, 3]):
print "i: ", i
if i == 2:
break
私がいる問題はbreak
後に実行するloop_end()
とexit_loop()
を得ることにあります。その行を追加するために覚えておく必要が
def break_loop():
loop_end()
exit_loop()
for i in my_for([1, 2, 3]):
print "i: ", i
if i == 2:
break_loop()
break
しかし、私は本当にのようなユーザを持っていないでしょう。私は、ユーザーがブレークする前に置く必要があり、別の関数を定義することによって、これを解決してきました。私は、イテレータクラスとしてジェネレータ関数を書き直すと、おそらくbreak
でコードを実行する方法があると思いますか?
ちなみに、continue
はそのまま動作します。
なぜカスタマイズされたループ動作を実装していますか? – Blender