0

私はscalaを学んでいるので、これがばかげた質問である場合はご容赦ください。私はケースクラスを試しており、次のことを試しています:-

case class A {
    def eval(x: Int): Boolean
}

case class B extends A

case class C extends A {
    override def eval(x: Int): Boolean = true
    // Compiler error is - 
    // Multiple markers at this line
    // - Missing closing brace `}' assumed here
    // - expected start of definition
}

ケースクラスで抽象メソッドを実装することはできませんか?

4

2 に答える 2

3

ケース クラスは別のケース クラスを継承できません (コンパイラは多くの魔法を行います)。scala では通常、trait を使用するため、コードは次のようになります。

trait A {
  def eval(x: Int): Boolean
}

case class C() extends A {
  override def eval(x: Int): Boolean = true
}
于 2013-03-27T14:02:40.850 に答える
0

abstract case class矛盾している。から拡張することはお勧めできません。abstract をcase class作成することによりcase class、インスタンス化可能なクラスを持つために、それをサブクラス化する必要があります。

共通のパターンは、常に継承ツリーのリーフにある1 つまたは複数 (多くの場合、複数)のesを持つベースとしてのabstract classorです。traitcase class

于 2013-03-27T14:01:23.133 に答える