Scala trait作为函数返回类型

时间:2018-03-04 17:50:09

标签: scala oop traits

如果我有特质A和B

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

如果您没有为bvariable scala编译器提供值,则会抱怨并非所有特征成员都已实现