単純なプリミティブ以外のメッセージを送受信する Scala/Akka のアクターのシステムがあります。次のような受信ケースがある場合:
(name: String, details: Map[String, List[Int])
コンパイラは型消去の警告を出します。これを修正する最も簡単な方法は、システムで考えられるすべてのメッセージに対してケース クラスを定義することです。
これを行うためのより良い/より正確な/よりエレガントな方法はありますか?
単純なプリミティブ以外のメッセージを送受信する Scala/Akka のアクターのシステムがあります。次のような受信ケースがある場合:
(name: String, details: Map[String, List[Int])
コンパイラは型消去の警告を出します。これを修正する最も簡単な方法は、システムで考えられるすべてのメッセージに対してケース クラスを定義することです。
これを行うためのより良い/より正確な/よりエレガントな方法はありますか?
はい、case class
es とcase object
s を探して、それらをアクター コンパニオン オブジェクトに入れます。
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?")
}
}