我一直在研究 Ruby 和 Python 生成器(Enumerators
在 Ruby 中称为)之间的相似之处/不同之处,据我所知,它们几乎是等价的。
然而,我注意到的一个区别是 Python 生成器支持一种close()
方法,而 Ruby 生成器不支持。在 Python 文档中,close()
据说该方法执行以下操作:
在生成器函数暂停的点引发一个 GeneratorExit。如果生成器函数随后引发 StopIteration(通过正常退出,或由于已经被关闭)或 GeneratorExit(通过不捕获异常),则 close 将返回给它的调用者。”
Enumerators
Ruby不支持该close()
方法有充分的理由吗?还是意外遗漏?
我还发现 RubyEnumerators
支持一种rewind()
方法,但 Python 生成器不支持……这也有原因吗?
谢谢