美文网首页
柯里化(科里化)Currying

柯里化(科里化)Currying

作者: 傻傻小萝卜 | 来源:发表于2016-07-02 08:52 被阅读104次

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

    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,最后一个赋值的,其他都是按照顺序的

    相关文章

      网友评论

          本文标题:柯里化(科里化)Currying

          本文链接:https://www.haomeiwen.com/subject/ourqjttx.html