Scala 使用默认参数值创建参与者
给定以下参与者类:Scala 使用默认参数值创建参与者,scala,akka,Scala,Akka,给定以下参与者类: class MyActor(val arg: Int = 5) extends Actor { ... } 如何创建使用默认值的MyActor实例而不使用system.actorOf(Props(new MyActor()) 第一个变量system.actorf(Props[MyActor])和第二个变量system.actorf(Props(classOf[MyActor])抛出: IllegalArgumentException:在MyActor上找不到参数[]的匹
class MyActor(val arg: Int = 5) extends Actor {
...
}
如何创建使用默认值的MyActor实例而不使用system.actorOf(Props(new MyActor())
第一个变量system.actorf(Props[MyActor])
和第二个变量system.actorf(Props(classOf[MyActor])
抛出:
IllegalArgumentException:在MyActor上找不到参数[]的匹配构造函数
这是意外的,因为类MyActor应该有一个空构造函数。请注意,Props(新MyActor)
变量只有在另一个actor内调用时才是危险的(因为关闭了封闭的actor的this
)。要克服这种危险,请在MyActor
的伴生对象中定义props
工厂,并为其指定默认参数值,而不是在actor的构造函数中:
object MyActor {
def props(arg: Int = 5): Props = Props(new MyActor(arg))
}
class MyActor(arg: Int) extends Actor {
...
}
然后
system.actorOf(MyActor.props())