为 Scala 特征提供构造函数

providing a constructor for a scala trait

SIP 25 将允许特征具有构造函数。在实施之前,什么是好的解决方法?

我认为唯一的解决方法是在特征中定义一些类似于构造函数参数的抽象方法,并在具体实现中覆盖它们:

trait A {
  def message:String
}

val a = new A {
  override val message = "Hello!"
}

在 scala 中,class/trait 的整个主体都是构造函数。所以基本上你使用相同的方法:

class B (override val message:String) extends A

val b = new B("Hello!")