私はRubyジェネレーターとPythonジェネレーター(Rubyで知られているEnumerators
)の類似点/相違点を調査してきましたが、私が知る限り、それらはほぼ同等です。
ただし、私が気付いた違いの1つは、Pythonジェネレーターはclose()
メソッドをサポートしているのに対し、Rubyジェネレーターはサポートしていないことです。Pythonのドキュメントから、このclose()
メソッドは次のことを行うと言われています。
ジェネレーター関数が一時停止されたポイントでGeneratorExitを発生させます。その後、ジェネレーター関数がStopIteration(正常に終了するか、すでに閉じられているため)またはGeneratorExit(例外をキャッチしないことにより)を発生させた場合、closeは呼び出し元に戻ります。」
RubyがこのメソッドEnumerators
をサポートしない正当な理由はありますか?close()
それとも偶然の脱落ですか?
また、RubyはメソッドをEnumerators
サポートしているが、 rewind()
Pythonジェネレーターはサポートしていないことも発見しました...これにも理由がありますか?
ありがとう