scala 模式匹配

Posted pengwang52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala 模式匹配相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/bluishglc/article/details/50995939


scala> val a = Array(1,2,3,4) a: Array[Int] = Array(1, 2, 3, 4)

匿名函数,由繁入简,

 使用case语句构造匿名函数的“额外”好处,

 case语句(组合)除了可以被编译为匿名函数(类型是FunctionX,在Scala里,所有的函数字面量都是一个对象,这个对象的类型是FunctionX),还可以非常方便的编译为一个偏函数PartialFunction!(注意:PartialFunction同时是Function1的子类)编译器会根据调用处的函数类型声明自动帮我们判定如何编译这个case语句(组合)

 case语句声明的变量就是偏函数的参数,既然case语句只能声明一个变量,那么偏函数受限于此,也只能有一个参数!


scala> a.map(x => x match {
     |   case 0 => "zero"
     |   case 1 => "one"
     |   case 2 => "two"
     |   case _ => "other"
     | })
res2: Array[String] = Array(one, two, other, other)


scala> a.map(x => x match { case x => x })
res4: Array[Int] = Array(1, 2, 3, 4)



scala> a.map(case x => x)
<console>:1: error: illegal start of simple expression
a.map(case x => x)
      ^


scala> a.map{case x => x}
res3: Array[Int] = Array(1, 2, 3, 4)


scala> a.map{x => x}
res7: Array[Int] = Array(1, 2, 3, 4)

 

以上是关于scala 模式匹配的主要内容,如果未能解决你的问题,请参考以下文章

Scala 模式匹配

必会Scala之模式匹配和样例类

Scala总结之模式匹配

Scala模式匹配错误,“错误的简单模式:错误使用_ *(不允许序列模式)”

scala 模式匹配

Scala - 模式匹配 MatchError