2

我在 Scala/Akka 中有一个 Actor 系统,可以发送和接收除简单原语之外的消息。如果我有类似的接收案例:

(name: String, details: Map[String, List[Int])

编译器给出类型擦除的警告。在我看来,解决此问题的最简单方法是为系统中的每条可能消息定义案例类。

有没有更好/更正确/更优雅的方式来做到这一点?

4

1 回答 1

1

是的,选择case classes 和case objects 并将它们放入 actor 的伴生对象中。

object Printer {
   case class Print(name: String, details: Map[String, List[Int])
}

class Printer extends Actor {
  import Printer._

  def receive = {
     case Print(name, data) => println(data)
     case _ => println("I'm sry, what?")
  }
}
于 2013-06-14T15:20:00.520 回答