可能重复:
How to overload bang(!) operator in Scala Actor model?
在Scala中的Actor模型实现中,我们可以覆盖bang(!)运算符吗? 我需要通过重载此运算符来修改消息传递的操作吗?
我需要包含任何actor向任何其他actor发送消息时发送的消息的日志记录。
开始了override def !(msg:Any):Unit =
{
//logic for writing to logs..
super.!(msg)
}
这很好用。但是,我想区分!的行为,取决于我发送的消息。
actor_name!(arg1,arg2,arg3)
actor_name1!(arg4, arg5)
在上述情况下,首先! opertion,我需要执行日志记录。第二个!,我只想在屏幕上打印。 如何在重写代码中区分这两个消息发送符号?
答案 0 :(得分:1)
也许是这样?
override def !(msg: Any) {
msg match {
case msg@(arg1, arg2, arg3) => /* your logic here... */ ; super ! msg
case msg@(arg1, arg2) => /* your logic here... */ ; super ! msg
}
}