yield语句实现
我想以易懂的形式了解关于yield
声明的所有内容。
在实现迭代器模式时,我已经阅读了yield
语句和它的简易性。 但是,大部分都很干燥。 我想了解一下,看看微软如何处理回报率。
另外,你什么时候使用yield break?
yield
通过在内部构建状态机来工作。 它存储例程退出时的当前状态,并在下一次从该状态恢复。
您可以使用Reflector来了解编译器如何实现它。
当您想要停止返回结果时使用yield break
。 如果你没有yield break
,编译器会在函数结尾处假设一个(就像正常函数中的return;
语句)
以下是Raymond Chen博客的一个开始:
正如Mehrdad所说,它构建了一个状态机。
除了使用Reflector(另一个极好的建议),你可能会发现我的关于迭代器块实现的文章很有用。 如果它不是finally
块,那将是相对简单的 - 但它们会带来复杂度的一个额外维度!
上一篇: yield statement implementation
下一篇: Meaning of @classmethod and @staticmethod for beginner?