2

単純なプリミティブ以外のメッセージを送受信する Scala/Akka のアクターのシステムがあります。次のような受信ケースがある場合:

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

コンパイラは型消去の警告を出します。これを修正する最も簡単な方法は、システムで考えられるすべてのメッセージに対してケース クラスを定義することです。

これを行うためのより良い/より正確な/よりエレガントな方法はありますか?

4

1 に答える 1

1

はい、case classes とcase objects を探して、それらをアクター コンパニオン オブジェクトに入れます。

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 に答える