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())