柯里化(科里化)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)的值。函数写法应该是这样

函数的调用:

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容