Scala:Scala中的模式匹配和匹配表达式是否相同?

时间:2017-02-13 15:32:15

标签: scala pattern-matching

我在Scala中看到很多标题为模式匹配的源代码,但它们只讨论匹配表达式。 Scala中的模式匹配是否仅在匹配表达式中使用?有人能够清楚地理解模式匹配与Scala中的匹配表达吗?

我是否应该将模式匹配视为比匹配表达式更广泛的概念?并且考虑匹配表达式只是模式匹配的一种用法?或者在Scala中,2个概念被认为是同义词?

1 个答案:

答案 0 :(得分:1)

match表达式只是使用模式匹配的一种方法。在各种上下文中使用相同的概念,例如:

//Exception handling    
try{
   //....
} catch {
   case ex: NullPointerException => ex.printStackTrace()
   case Exception(msg) => println(msg)
   case _ => println("error")
}

// Map/flatMap/filter for collections
val l  = List(1, "2", 3L, Some(1L))
l.foreach { 
 case l:Long => println("Long 1")
 case s:String => println(s)
 case Some(n) => println(n)
 case None => println("error")
 case _ => println("dunno")
}