Java也能够像Lua一样拥有协同程序。你觉得不可能?其实可以用JavaX(一种Java源代码编译的Java方言)中实现!
目前,将一个函数转换为协同程序需要一点(直接的)源代码转换——当然这些转换随后会自动执行。
如果我们进行手动转换,那么我们就可以立即使协同程序开始运行。『运行示例』
示例:一个for循环
for (int i = 1; i <= 3; i++) print("Counting to " + i + "!");
用表达式转换为此协同程序:
_for(r { i = 1 }, func { i <= 3 }, r { i++ }, r { print("Counting to " + i + "!"); })
它主要分为几个等级;你需要将i变量放在合适的位置。
然后,你的代码就可以作为协同程序运行了,这意味着,不需要繁琐的步骤(通过doStep方法)就可以随时运行或者中断,由此为其它协同程序腾出时间。这是一个非常有用的功能,例如在单个处理器上并行化多个计算。
如你所见:在JavaX的帮助下让不可能变成了可能!