我在Scala中看到很多标题为模式匹配的源代码,但它们只讨论匹配表达式。 Scala中的模式匹配是否仅在匹配表达式中使用?有人能够清楚地理解模式匹配与Scala中的匹配表达吗?
我是否应该将模式匹配视为比匹配表达式更广泛的概念?并且考虑匹配表达式只是模式匹配的一种用法?或者在Scala中,2个概念被认为是同义词?
答案 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")
}