使用factory作为功能文字实例化scala类型

use*_*267 1 scala

鉴于以前在此处发布的问题的以下答案,我如何更改fac函数以获取构造函数参数?

class BalanceActor[T <: Actor](val fac: () => T) extends Actor {
  val workers: Int = 10

  private lazy val actors = new Array[T](workers)

  override def start() = {
    for (i <- 0 to (workers - 1)) {
      actors(i) = fac() //use the factory method to instantiate a T
      actors(i).start
    }
    super.start()
  }
}
Run Code Online (Sandbox Code Playgroud)

Hei*_*ger 5

对于一个String论点:

class BalanceActor[T <: Actor](val fac: String => T) extends Actor ...

对于一个A论点:

class BalanceActor[A, T <: Actor](val fac: A => T) extends Actor ...