Scala trait 作为函数 return 类型

Scala trait as a function return type

如果我有特征 A 和 B

trait A {
  def funcA(a: Int): B
}

trait B {
  var bvariable: Int
  def funcB(b: Int): Int
}

有没有可能有以上的?如果是,我可以覆盖 class 中的函数,但是我如何初始化 bvariable 因为我无法创建特征的实例,因此没有构造函数?

当您声明一个特征时,实现它的 class 必须为其成员提供特征方法和值​​的实现。例如 classB 可以像这样实现特征 B:

class classB extends B{
  override var bvariable: Int = 0

  override def funcB(b: Int): Int = {
    0
  }
}

如果你不为 bvariable 提供一个值,scala 编译器会抱怨没有实现所有的特征成员