【发布时间】:2017-09-04 11:04:39
【问题描述】:
我正在学习Scala,从scala doc中找到PartialFunction和Function1的定义,如下图:
trait PartialFunction[-A, +B] extends (A) ⇒ B
trait Function1[-T1, +R] extends AnyRef
Q1) 我的第一个问题是:(A) => B 的类型是什么?
而且,我知道我们可以通过 lift 方法将 PartialFunction 变成普通函数。
但是 Q2)ParitialFunction 和 Function1 之间的关系是什么?
如果某个函数参数的类型是Function1,我们可以传递一个匹配的PartitionFunction给它,如下所示:
scala> val process = (f: Function1[String, Int]) => f("1024")
process: (String => Int) => Int = <function1>
scala> val pattern = "([0-9]+)".r
pattern: scala.util.matching.Regex = ([0-9]+)
scala> val str2int: PartialFunction[String, Int] = {
| case pattern(num) => num.toInt
| }
str2int: PartialFunction[String,Int] = <function1>
scala> accept(str2int)
res67: Int = 1024
谢谢!
【问题讨论】:
标签: scala