如何在scala中为不同类型的输入覆盖bang运算符(!)

时间:2012-11-17 06:46:30

标签: scala override

  

可能重复:
  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,我需要执行日志记录。第二个!,我只想在屏幕上打印。 如何在重写代码中区分这两个消息发送符号?

1 个答案:

答案 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
    }
}