Questions tagged «yield-keyword»

8
在PHP中yield是什么意思?
我最近偶然发现了以下代码: function xrange($min, $max) { for ($i = $min; $i <= $max; $i++) { yield $i; } } 我以前从未看过这个yield关键字。尝试运行我得到的代码 解析错误:语法错误,第x行上的意外T_VARIABLE 那么这个yield关键字是什么呢?它甚至是有效的PHP吗?如果是,该如何使用?

9
yield()的主要用途是什么,它与join()和interrupt()有何区别?
我yield()对Java 中方法的使用有些困惑,尤其是在下面的示例代码中。我也读过yield()是“用来防止线程执行的”。 我的问题是: 我相信下面的代码在使用yield()和不使用时都会产生相同的输出。这样对吗? 实际上,的主要用途是yield()什么? 在哪些方面yield()从不同join()和interrupt()方法? 代码示例: public class MyRunnable implements Runnable { public static void main(String[] args) { Thread t = new Thread(new MyRunnable()); t.start(); for(int i=0; i<5; i++) { System.out.println("Inside main"); } } public void run() { for(int i=0; i<5; i++) { System.out.println("Inside run"); Thread.yield(); } } } …

4
为什么收益率回报不能出现在带有捕获的try块内?
没关系: try { Console.WriteLine("Before"); yield return 1; Console.WriteLine("After"); } finally { Console.WriteLine("Done"); } 该finally块在整个事情完成执行后运行(即使在枚举完成之前就放弃了枚举,也IEnumerator<T>支持IDisposable提供一种确保这一点的方法)。 但这不行: try { Console.WriteLine("Before"); yield return 1; // error CS1626: Cannot yield a value in the body of a try block with a catch clause Console.WriteLine("After"); } catch (Exception e) { Console.WriteLine(e.Message); } 假设(出于参数考虑)WriteLinetry块中的一个或其他调用引发了异常。继续执行catch块有什么问题? 当然,收益率返回部分(当前)无法抛出任何东西,但是为什么那应该阻止我们封闭try/ catch处理在a之前或之后抛出的异常yield …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.