如果我已经通过context become(foo, discardOld = false)
叠加了行为,有没有办法将邮件推迟到行为堆栈?斯卡拉/阿卡 - 通过行为堆栈传递消息?
比方说,我有堆叠上下文foo
和bar
。两者都有一些处理Baz
消息(其中包括) - 如果foo
位于行为堆栈的顶部,是否有方法将Baz
消息传递给bar
?
我猜想case
警卫会阻止一个级别消费这个消息,但是在传递消息之前,这仍然会在foo
级别使副作用更加复杂 - 警卫必须是一些执行副作用。
编辑为WHEREFOR:
我用过的堆叠上下文的(在某种程度上)替代类层次结构。在较低级别的上下文中,所有这些参与者都会共享一些基本行为,然后在添加之后添加的层中的其他行为区分参与者。这是一种“某种”选择,因为演员可能实际上需要改变“类”来回应消息(同时保留自我,以便其他具有这些句柄的演员不需要替换一堆裁判等) 。我希望能够做的就像有条件地呼叫super.apply(Baz)
,同时在正确的概念层/位置中维护副作用。
hrm,也许。但是,我一定希望保留堆栈的顶部,而不是“不可能”。 – Carl
现在您的堆叠行为有什么用处?你有没有不满? –
Neg - 会编辑Q. – Carl