我需要根据命令行参数创建一个actor:
def main(args: Array[String]): Unit = {
val t = args(0) match {
// 1
case 1 => // MyActor1
case 2 => // MyActor2
case 3 => // MyActor3
}
// 2
val app = system actorOf (Props[/* ??? MyActor1(2,3).type? - not working*/], "app")
app ! "Start"
}
abstract class MyActorBase extends Actor {...}
class MyActor1 extends MyActorBase {...}
class MyActor2 extends MyActorBase {...}
class MyActor3 extends MyActorBase {...}
所以我有两个问题:match
应该返回什么,我应该传递给Props
什么?
在C#中,我会使用typeof
运算符,但是,以下代码在Scala MyActor1.type
中不起作用
只是一个合适的关键词问题(这里我假设您使用的是最新版本的Props-api):
val actorClass = args(0) match {
case 1 => classOf[MyActor1]
case 2 => classOf[MyActor2]
}
val app = system actorOf (Props(actorClass), "app")