提供scala特征的构造函数

Nei*_*eil 3 constructor scala traits

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

Aiv*_*ean 8

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

trait A {
  def message:String
}

val a = new A {
  override val message = "Hello!"
}
Run Code Online (Sandbox Code Playgroud)

在scala中,类/特征的整个主体是构造函数.所以基本上你使用相同的方法:

class B (override val message:String) extends A

val b = new B("Hello!")
Run Code Online (Sandbox Code Playgroud)