0
scala를 처음 사용하고 일부 상속 문제가 발생했습니다 ... 내 NodeVisitor 클래스가 GreenBasket에서 "b1"과 "b2"를 구별하지 못하고 오류를 제공합니다 바구니에 "방문"하는 방법이 없다고 말했습니다. GreenBasket은 "b1"및 "b2"가있는 GreenBasket 또는 OrangeBasket 객체를 보유 할 수 있어야합니다. "b1"과 "b2"의 유형에 따라 적절한 "방문"방법을 어떻게 호출 할 수 있습니까? 감사합니다.스칼라 : 추상 부모 클래스 매개 변수에서 올바른 자식 클래스를 파생
trait Visitor{
def visit(o: OrangeBasket): Int
def visit(g: GreenBasket): Int
}
sealed abstract class Basket() {
def accept(visitor: Visitor): Unit
}
case class OrangeBasket(count: Int, kilos: Double) extends Basket(){
def this(count: Int) = this(count, 0)
def accept(visitor: Visitor) = visitor.visit(this)
}
case class GreenBasket(b1: Basket, b2: Basket) extends Basket(){
def this(b1: Basket) = this(b1, null)
def this() = this(null)
def accept(visitor: Visitor) = visitor.visit(this)
}
class NodeVisitor() extends Visitor{
def visit(o: OrangeBasket) = 1
def visit(g: GreenBasket) = this.visit(g.b1) + this.visit(g.b2) + 1
}
의견을 보내 주셔서 감사합니다. 나는 지금 일하고있어. – rstojano