如何在actionscript中执行python / ruby​​ / javascript样式生成器?

时间:2009-12-17 00:50:27

标签: python actionscript generator coroutine

我想在actionscript中使用协同程序来实现状态机。

我希望能够做类似以下的事情

function stateMachine():void
{
   sendBytes(0xFFFF);
   var receiveBytes:ByteArray = yield()
   sendBytes(receiveBytes);
}

stateMachine.send( Socket.read() ) 

就像这个blog entry

一样

2 个答案:

答案 0 :(得分:2)

据我所知,Actionscript没有协同程序,continuation或任何可以提供相关行为的东西(在不推送堆栈框架的情况下调用函数)。你可以使用静态变量和switch伪造它,但是这会破坏为协同程序使用协同程序的目的。此外,没有尾调用(据我所知,仍然只有一个proposal for ECMASCRIPT),伪造的协同程序不会像真正的协同程序一样使用常量堆栈空间。

关于你的示例代码,协同程序通常需要循环才有用。

答案 1 :(得分:1)

那么,这个怎么样?

function stateMachine(socket:Socket, target:YourReceiverClass):void
{
   target.sendBytes(0xFFFF);
   var receiveByte:int = socket.readByte();
   target.sendBytes(receiveByte);
}

stateMachine( mySocket )