ios - Swift: 'Currying' 和返回函数的函数有什么区别?

标签 ios swift swift2 currying

//  function 1------- Currying   
    func increment (incrementBy x: Int)(y: Int) -> Int {
       return x + y
    }

//  function 2------- The function that return a function
    func increment(incrementBy x: Int) -> ((Int) ->Int){
       func incrementFunc(y: Int){
           return x + y
       }
    }

这两个函数做同样的事情,不是吗?我可以用同样的方式使用它们。像这样:

let incrementFunc = increment(incrementBy: 10)
var number = 10
number = incrementFunc(number)

所以,我很困惑,他们有什么区别?每种方式的优点是什么?

最佳答案

您的第一个示例是第二个示例的“语法糖”,与 [Int] 类似是 Array<Int> 的简写.他们的意思相同,行为方式相同。

但是,我应该指出这种语法糖很快就会消失。 This proposal ,由 Swift 编译器工程师编写并被 Swift 开发团队接受,表示速记柯里化(Currying)语法将不再是该语言的一部分。相反,所有柯里化(Currying)都将按照您编写的第二个示例的方式完成。

关于ios - Swift: 'Currying' 和返回函数的函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34890265/

相关文章:

ios - Facebook 页面管理器 iO 的通用链接

html - 网页上的ajax完成后如何从url获取html

ios - fatal error : use of unimplemented initializer in custom navigationcontroller

ios - 关闭模态视图 Controller 后, View 处于纵向模式

ios - 如何画一条线连接 map 上的两个图钉?

swift - 遍历挂载卷以查找特定文件类型

ios - 在 for 循环的每个循环上创建一个 tableView。 swift

frameworks - Xcode 7.3 beta 1 与 Swift 中的 CommonCrypto

ios - AWS S3 和 Bolts 数据类型问题 (Swift 2.0)

UIScrollView 中的 iOS 编程缩放不起作用