找回密码
 点一下
查看: 721|回复: 4

请教关于actor的问题,创建悖论

[复制链接]
发表于 2013-5-24 03:09:54 | 显示全部楼层 |阅读模式
<On Term="UnitBirth.#id" send="Create" />


演算体需要创建后才能接收信息吧?那么这里貌似有个悖论,演算体还没有创建,如何接收UnitBirth的信息来创建自己呢?


但这语句是能正常运作的。那么GE代码上的处理方式会不会是


遍历On数组,判断send变量。
如果是Create的话,就把On事件挂在一个全局域,或者是能够接收UnitBirth或者所有信息的域中,由该域处理目标演算体的创建操作。



发表于 2013-5-24 08:34:41 | 显示全部楼层
应该不是吧,应该跟触发器一样的采用了注册,纯猜测……
回复

使用道具 举报

发表于 2013-5-24 11:17:46 | 显示全部楼层
Actor系统有许多特例,Create就是其中一个。

基本上所有消息都必须在Actor被创建后才能处理。但创建消息是唯一例外。

具体操作方式和你想像的差不多。
回复

使用道具 举报

 楼主| 发表于 2013-5-24 15:13:02 | 显示全部楼层
明白了,谢谢:)
回复

使用道具 举报

发表于 2013-5-26 15:56:20 | 显示全部楼层
本帖最后由 ff1407 于 2013-5-26 15:57 编辑

作为一个编程人员,我认为这个应该是一个”mediator模式“的机制。系统会不断发出事件消息,而到底接不接收看的是我们是否挂在运行逻辑到消息处理队列上。create消息的逻辑是一开始就挂载的,而其它的消息处理则是创建后(同时)挂载的。创建对象的动作不需要对象本身,所以它可以被提前挂载,而其他动作需要已创建的对象为基础。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 17:42 , Processed in 0.037888 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表