如何在Scala中覆盖类型成员的函数?

时间:2015-10-22 15:01:25

标签: scala

假设我有一个代码:

class C extends A#B {
  override def fun(): Int = 100
}

trait A {
  type B = { 
    def fun(): Int 
  }
}

编译器说:

class type required but Object{def fun(): Int} found
  class C extends A#B {
                    ^

我如何理解这个错误?

1 个答案:

答案 0 :(得分:3)

您无法在Scala中扩展结构类型。结构类型仅表示类型必须定义的一堆方法,以便在期望结构类型的位置使用。

因此,写

就足够了
class C {
  def fun(): Int = 100
}

C类型的对象传递给B的变量。