使用包含自我类型的道具创建actor

时间:2014-01-06 19:30:55

标签: scala akka traits

我正在努力创造具有自我类型的演员的新方法。

我们假设我有一个演员

trait BarPolicy {
  val maxDrinksNumber:Int
}

trait ProductionPolicy extends BarPolicy {
  val maxDrinksNumber = 5
}

object FooActor { 
   def apply()  = new FooActor with ProductionPolicy 
}

class FooActor extends Actor {
   this: BarPolicy =>
}

拥有这些代码我可以这样写:

context.actorOf(Props(FooActor()))

现在这已被弃用,我找不到另一种正确的方法。

根据akka人的建议,“apply()”方法应该看起来像这样:

def apply() : Props = Props(classOf[FooActor])

但我可以在哪里放混合物?

2 个答案:

答案 0 :(得分:2)

object FooActor { 
  private class ProductionFooActor extends FooActor with ProductionPolicy
  def apply() : Props = Props(classOf[ProductionFooActor])
}

也许是这样的?

答案 1 :(得分:0)

这样的东西?

object FooActor { 
   def apply() : Props = Props(new FooActor with ProductionPolicy)
}

val actor = system.actorOf(FooActor())