如何覆盖 scala 中不同类型的输入的 bang operator(!)



可能的重复项:
如何在Scala Actor模型中重载bang(!)运算符?

在 Scala 中的 Actor 模型实现中,我们可以覆盖 bang(!) 运算符吗? 我需要通过重载此运算符来修改消息传递的操作吗?

我需要包括记录当任何参与者向任何其他参与者发送消息时发送的消息。我开始于

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

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

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

在上述情况下,首先!操作,我需要执行日志记录。第二!,我只想在屏幕上打印。如何在覆盖代码中区分这两种消息发送表示法?

也许是这样?

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

相关内容

最新更新