在 erlang 中,您可以在生成 actor 时将初始状态传递给它。这样你就不需要处理让actor再次进入初始状态的初始化消息,或者需要初始化消息的消息之前到达。在奥尔良,假设谷物始终存在,您不能使用构造函数。有没有办法将初始状态传递给grains,从而避免任何破坏一致性的init方法需要在任何其他方法之前调用它?
当我说“将actor带到它的初始状态”时,我的意思是,在奥尔良上下文中,调用特定grain激活的init方法两次。这就像覆盖状态。可能你需要这个重置状态的消息之王,但如果你不需要它,它就是一个陷阱,一个潜在的错误来源。
我正在寻找某种类型的构造函数,例如spawn(module, function, [initial state])
来自 erlang 的构造函数。我的第一次尝试是使用以下签名查找 GetGrain 的任何重载:GrainFactory.GetGrain<IGrain>(id, initialState);