美文网首页
Swift 中的咖喱(Curried )函数

Swift 中的咖喱(Curried )函数

作者: 默默熊 | 来源:发表于2017-02-14 10:21 被阅读25次

Swift 中的咖喱(Curried )函数 

NM, 刚想正经写一篇技术的博客,却发现咖喱函数表示在Swift (当前为3.0)中已经被去掉了!不过,善始善终,我还是把这篇写完吧。

咖喱函数是一个源至函数式编程的概念。首先考虑我们所熟悉的带有默认参数的函数。一个带有参数的函数可以设一个或多个参数的默认值。在函数被调用时,如果不指定,会自动使用这些默认值。因为函数的默认参数值是在编译时就决定了的,所以在运行时不能被改变。

而咖喱函数提供了进一步的灵活性,这个值是在运行时决定的,因而是“可变的”。对应于一个已有的函数,它可以生成一个对应的将其中某个参数固化了的函数。下面看例子

通常的情形:

func addTwoNumbers(first: Int, second, Int) -> Int {

    return first + second

}

addTwoNumbers(first: 1, second: 2)

对应的咖喱函数是

fun addTwoNumbers_Curried(first Int)(second: Int) -> Int {

return first + second

}

看起来没有太大不同吧,下面看看如何使用

let addTwoNumbers_4 = addTwoNumbers_Curried(4)

let addTwoNumbers_6 = addTwoNumbers_Curried(6)

addTwoNumbers_4(second: 8)                  // 12

addTwoNumbers_6(second: 8)                  // 14

更有用的是

func foo() -> Int {

...

}

let addTwoNumbers_Foo = addTwoNumbers_Curried(foo())

addTwoNumbers_Foo(8)                             // foo() + 8

可以给一个加了咖喱的函数继续加咖喱么?Why not?

参考:

https://ijoshsmith.com/2014/06/09/curried-functions-in-swift/

相关文章

网友评论

      本文标题:Swift 中的咖喱(Curried )函数

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