scala 中允许带有单个参数的 function 略去括号, 例如:
>def foo(x: Int) = x + 1
>foo(x)
>2
>foo x
>2
而PartialFunction可以通过 { case … => …}定义,例如:
scala> val p:PartialFunction[Int,Int] = {case i:Int => i + 1}
p: PartialFunction[Int,Int] = <function1>
scala> p(1)
res0: Int = 2
可见函数 p 类似foo(x:Int) = x + 1
因此,对于需求 f(T) => U
的方法,均可以使用 { case t:T => U}
来描述。
例如:
scala> val seq = Seq(1,2,3,4,5)
seq: Seq[Int] = List(1, 2, 3, 4, 5)
scala> seq.map {case i => i + 1 }
res1: Seq[Int] = List(2, 3, 4, 5, 6)
scala> seq.map(_ + 1)
res2: Seq[Int] = List(2, 3, 4, 5, 6)