我想運行下面的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