아래의 클래스 Expr을 실행하고 싶습니다. 내가 노력하고 무엇을 여기 http://andymaleh.blogspot.ie/2008/04/scalas-pattern-matching-visitor-pattern.html추상 클래스의 사례 클래스를 가져올 수 없습니다.
에서이 코드입니다 촬영했습니다 :
import Expr.Sum
object Main {
def main(args:Array[String]) {
var expr1 = new Sum(new Num(1), new Prod(new Num(2), new Num(3)))
print(expr1)
}
}
abstract class Expr {
case class Num(n: Int) extends Expr
case class Sum(l: Expr , r: Expr) extends Expr
case class Prod(l: Expr, r: Expr) extends Expr
def evalExpr(e: Expr): Int = e match {
case Num(n) => n
case Sum(l, r) => evalExpr(l) + evalExpr(r)
case Prod(l, r) => evalExpr(l) * evalExpr(r)
}
def printExpr(e: Expr) : Unit = e match {
case Num(n) => print(" " + n + " ")
case Sum(l, r) => printExpr(l); print("+"); printExpr(r)
case Prod(l, r) => printExpr(l); print("x"); printExpr(r)
}
}
그러나
import Expr.Sum
라인
은 컴파일 타임 오류를 일으키는 : '을 (를) 찾을 수 없습니다 : 개체 EXPR를'. Expr 클래스를 어떻게 가져올 수 있습니까?
이 정의는 다른 파일에서 가져온 것입니까? 그들은 같은 패키지에 있습니까? 세부 사항을 부탁드립니다. –
@Aaron Novstrup ive는 코드의 원래 출처를 보여주기 위해 제 질문을 업데이트했습니다. – user701254
@ user701254 해당 링크의 코드는 중괄호를 제외한 마이너스 코드와 같습니다. – Brian