柯里化(科里化)Currying

科里化:必须使用在一元函数中,且函数具有两个或者两个以上的变量。

Currying如何进行的呢?不妨来看一个直观的例子,假设有如下函数:f(x, y, z) = x / y +z.要求f(4,2, 1)的值。

首先,用4替换f(x, y, z)中的x,得到新的函数g(y, z) = f(4, y, z) = 4 / y + z

然后,用2替换g(y, z)中的参数y,得到h(z) = g(2, z) = 4/2 + z

最后,用1替换掉h(z)中的z,得到h(1) = g(2, 1) = f(4, 2, 1) = 4/2 + 1 = 3

科里化中例如函数y = x+y的swift函数为:

fun caddTo(adder:Int)->Int->Int{

    return{            // 这里return 是返回Int->Int,而在下面的num中存放了第一次输                             入的数据

         num in

      return num + adder

}

}

上面讲到的那个函数f(x, y, z) = x / y +z.要求f(4,2, 1)的值。函数写法应该是这样

柯里化(科里化)Currying_第1张图片

函数的调用:

let hanShuX =hanShuXYZ(1)//对Z赋值

let hanShuXY = hanShuX(4)//将对X赋值,

let hanShuXYZD = hanShuXY(2)//对XY赋值

函数这样调用的话,调用写好方法的那个函数中的值是最后赋给参数的,就像上面最早的是赋值的是1,但是它是Z,最后一个赋值的,其他都是按照顺序的

你可能感兴趣的:(柯里化(科里化)Currying)