Я совершенно новый для Scala и получил несколько нерешенных проблем со следующим кодом:Scala - не тот случай, класс и не имеет метод .unapply
object exprs{
println("Welcome to the Scala worksheet")
def show(e: Expr): String = e match {
case Number(x) => x.toString
case Sum(l, r) => show(l) + " + " + show(r)
}
show(Sum(Number(1), Number(44)))
}
trait Expr {
def isNumber: Boolean
def isSum: Boolean
def numValue: Int
def leftOp: Expr
def rightOp: Expr
def eval: Int = this match {
case Number(n) => n
case Sum(e1, e2) => e1.eval + e2.eval
}
}
class Number(n: Int) extends Expr {
override def isNumber: Boolean = true
override def isSum: Boolean = false
override def numValue: Int = n
override def leftOp: Expr = throw new Error("Number.leftOp")
override def rightOp: Expr = throw new Error("Number.rightOp")
}
class Sum(e1: Expr, e2: Expr) extends Expr {
override def isNumber: Boolean = false
override def isSum: Boolean = true
override def numValue: Int = e1.eval + e2.eval
override def leftOp: Expr = e1
override def rightOp: Expr = e2
}
я получаю следующие ошибки:
Ошибка: объект Number не случай класса, а также не иметь/член Исключить unapplySeq
Ошибка: не найдено: значение Сумма
Как их решить? Заранее спасибо
Возможный дубликат выражения [map expression in case в scala pattern matching] (http://stackoverflow.com/questions/27051030/map-expression-in-case-clause-in-scala-pattern-matching) –
@ TzachZohar нет, это не связано с этим вопросом. Здесь проблема OP не ограничивается шаблоном. OP здесь не понимает 'object',' class' и 'case class'. –