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