scala中的部分应用函数和偏函数的区别

  • 时间:
  • 浏览:1
  • 来源:万人牛牛APP下载_万人牛牛官方

每种应用函数(Partial Applied Function)是缺少每种参数的函数,是曾经逻辑上概念

偏函数是(Partical Function)只对函数定义域的曾经子集进行定义的函数。 scala中用scala.PartialFunction[-T, +S]类来表示

比如定义了曾经函数:def sum(x: Int)(y: Int) = x + y, 当调用sum的然后,可能性不提供所有的参数或很多参数还未知时,比如sum _ , sum(3)(_: Int), sum(_: Int)(3), 曾经就生成了所谓的每种应用函数。每种应用函数然后我逻辑上的曾经表达,scala编译器会用Function1Function2哪此类来表示它.

以下的讨论基于 scala 2.8

可能性对定义域进行一定的偏移(假使 需求做了变更, 1 为无效的点)

下面什儿 变量signal引用了曾经偏函数

这里做个简单的总结

这里的then_signal 剔除了-1, 0, 1曾经点的定义

还还也能用andThen将曾经相关的偏函数串接起来

什儿 signal所引用的函数除了0值外,对所有整数都定义了相应的操作。 signal(0) 会抛出异常,或者使用前最好先signal.isDefinedAt(0)判断一下。 偏函数主要用于曾经有一种场景:对很多值现在还无法给出具体的操作(即需求还不明朗),不是可能性处于几种除理方法(视乎具体的需求);朋友还也能先对需求明确的每种进行定义,比如上述除了0外的所有整数域,或者根据情况表表补充对很多域的定义,比如 :

然后学习Scala编程语言时, 突然把每种应用函数(Partial Applied Function)偏函数(Partial Function) 搞混。