Tag: yield keyword

yield()的主要用途是什么?它与join()和interrupt()有什么不同?

我对Java中yield()方法的使用有点困惑,特别是在下面的示例代码中。 我也读过yield()是用来阻止线程执行的。 我的问题是: 我相信下面的代码在使用yield()和不使用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(); } } } 使用上面的代码获得相同的输出,使用yield()和不使用yield() : Inside […]

在PHP中,收益是什么意思?

我最近偶然发现了这个代码: function xrange($min, $max) { for ($i = $min; $i <= $max; $i++) { yield $i; } } 我从来没有见过这个yield关键字。 试图运行我得到的代码 parsing错误:语法错误,第x行出现意外的T_VARIABLE 那么这个yield关键字是什么? 它甚至是有效的PHP? 如果是这样,我该如何使用它?

为什么不能在一个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); } 假设(出于参数的缘故)try块中的一个或另一个WriteLine调用抛出exception。 在catch块中继续执行有什么问题? 当然,yield return部分(当前)不能抛出任何东西,但是为什么我们不应该封闭try / catch来处理在yield […]