scala 一个case对象如何扩展一个抽象类?

pieyvz9o  于 2023-06-29  发布在  Scala
关注(0)|答案(1)|浏览(171)

我希望有一些从双重继承的抽象类继承的case对象。

object Main {
  sealed abstract class A(a: Int)
  sealed abstract class B(a: Int) extends A(a)

  case object Foo extends B(a) { val a = 5 }

  case class Bar(a: Int) extends A(a)
}

然而,该行

case object Foo extends B(a) { val a = 5 }

错误与

main.scala:5: error: not found: value a
  case object Foo extends B(a) { val a = 5 }

如何修复我的代码?

xzlaal3s

xzlaal3s1#

您需要为B的构造函数提供一个int值。这应该可以工作:

case object Foo extends B(5) { val a = 5 }

在您的示例中,Foo extends B(0)也可以正常工作,因为B不对a参数执行任何操作。
写入B(a)要求a是在该作用域中定义的Int值,但实际情况并非如此。所以这和写作是一样的:

case object Foo extends B(iDontKnowWhatToPutHere)

相关问题