Scala中的纯函数

纯函数是不依赖于i/o和超出函数范围的其他值的函数。并且只取决于在函数的参数中传递的值。

让我们进一步详细说明函数,

Scala的纯函数依赖于:

  1. 传递给它的参数。

  2. 函数的算法(操作)。

纯函数独立于:

  1. 任何外部I / O,例如输入外围设备,数据库,文件,服务等。而且,它不能为任何输出提供任何输出。

  2. 它不能使用函数范围之外的任何值。同样,不能在其范围之外修改任何变量。

根据Alvin Alexander的定义,纯函数=输出取决于输入+无副作用

纯函数的一些示例是:

  1. isEmpty()

  2. sqrt()

现在,让我们创建一个纯函数:

示例:里程计算器

object MyObject {
    def mileageCal(distance:Int, fuel:Int): Float = {
        val mileage = distance/fuel
        return (mileage);
    }
    def main(args: Array[String]) {
    println("我的自行车的行驶里程为: " + mileageCal(342, 9))
    }
}

输出:

我的自行车的行驶里程为: 38.0

在上面的代码中,我们创建了一个名为的函数mileageCal(),该函数接受距离fuel的两个整数值。该函数将使用公式miles = distance / fuel来查找里程。然后该函数将该值返回给调用函数。

Scala中的不纯函数

所有不纯的函数都是不纯的。这使得非纯函数的定义为“依赖于i/o或函数作用域以外的其他值以及参数值的函数”。

现在,让我们创建一个不纯函数:

示例:常数乘数

object MyObject {
    val constant = 12.4;
    def constantMul(value:Int): Double = {
        val result = value*constant; 
        return (result);
    }
    
    def main(args: Array[String]) {
        println("常数乘数的结果是: " + constantMul(34))
    }
}

输出:

常数乘数的结果是: 421.6

在上面的代码中,我们创建了一个constantMul()函数,该函数接受与对象中定义的值相乘的参数值,即该值取决于函数范围之外的值。

使用纯函数的好处

在Scala中使用纯函数的一些好处:

  1. 易于组合:纯函数是独立于I/O的,因此可以很容易地与其他函数组合。

  2. 易于测试和调试:由于它们独立于外部值,因此它们的测试和调试很容易,因为您不需要查看函数的范围之外。

  3. 它们不会更改输入值和超出其范围的其他值。