1
下面是我試圖用它來說明模式匹配代碼:理解圖案示例代碼匹配
package patternmatching
object patterntest {
abstract class Expr
case class Var(name: String) extends Expr
case class Number(num: Double) extends Expr
case class UnOp(operator: String , arg: Expr) extends Expr
case class BinOp(operator: String, left: Expr, right: Expr) extends Expr
def simplifyTop(expr: Expr): Expr = expr match {
case UnOp("-", UnOp("-", e)) => e //double negation
case BinOp("+", e, Number(0)) => e //adding zero
case BinOp("*", e, Number(1)) => e //Mutiplying by one
case _ => expr
}
def main(args: Array[String]) {
UnOp("-" , UnOp("-", e))
}
}
如何測試每個模式?行UnOp( 「 - 」,UnOp( 「 - 」,電子)) 的主要方法中提供了一個錯誤:
not found: value e
'UnOp(「 - 」,UnOp(「 - 」,Var(「foo」)))'in main,no? –
@ om-nom-nom謝謝,你是否介意模式匹配在上述情況下如何工作。我仍然不明白。 – user701254
在主要方法中,您構建了兩個嵌套的UnOp,其中內部的一個第二個參數試圖傳遞未定義的變量。 – pedrofurla