2012-11-17 35 views
1

可能重复(!):
How to overload bang(!) operator in Scala Actor model?如何覆盖砰运营商针对不同类型的输入斯卡拉

在斯卡拉的Actor模型的实现,我们可以覆盖的爆炸( !)运营商? 我需要通过重载此运算符来修改消息传递的操作吗?

我需要包括记录当任何演员发送消息给其他演员时发送的消息。 我开始于

override def !(msg:Any):Unit = 
{ 
    //logic for writing to logs.. 
    super.!(msg) 
} 

这工作正常。但是,我想根据我发送的消息来区分!的行为。

actor_name!(arg1,arg2,arg3) 
actor_name1!(arg4, arg5) 

在上述情况下,首先! opertion,我需要执行日志记录。而对于第二!,我只是想在屏幕上打印。 如何在重写代码中区分这两个消息发送表示法?

回答

1

也许是这样吗?

override def !(msg: Any) { 
    msg match { 
     case [email protected](arg1, arg2, arg3) => /* your logic here... */ ; super ! msg 
     case [email protected](arg1, arg2) => /* your logic here... */ ; super ! msg 
    } 
}