2024-10-04 01:36:50 发布
网友
我想在actionscript中使用协程来实现一个状态机。在
我希望能做如下的事情
function stateMachine():void { sendBytes(0xFFFF); var receiveBytes:ByteArray = yield() sendBytes(receiveBytes); } stateMachine.send( Socket.read() )
就像这个blog entry
好吧,这个怎么样?在
function stateMachine(socket:Socket, target:YourReceiverClass):void { target.sendBytes(0xFFFF); var receiveByte:int = socket.readByte(); target.sendBytes(receiveByte); } stateMachine( mySocket )
据我所知,Actionscript没有协程、continuations或任何可以提供相关行为的东西(调用函数时不推栈帧)。您可以使用静态变量和switch来伪造它,但这就违背了为状态机使用协同程序的目的。另外,如果没有尾部调用(据我所知,仍然只有一个proposal for ECMASCRIPT),伪造的协程不会像真正的协程那样使用恒定的堆栈空间。在
switch
对于示例代码,协程通常需要循环才能有用。在
好吧,这个怎么样?在
据我所知,Actionscript没有协程、continuations或任何可以提供相关行为的东西(调用函数时不推栈帧)。您可以使用静态变量和
switch
来伪造它,但这就违背了为状态机使用协同程序的目的。另外,如果没有尾部调用(据我所知,仍然只有一个proposal for ECMASCRIPT),伪造的协程不会像真正的协程那样使用恒定的堆栈空间。在对于示例代码,协程通常需要循环才能有用。在
相关问题 更多 >
编程相关推荐