在Swift中讨论,将来会有新的声明语法吗?

时间:2015-12-08 15:07:29

标签: swift

今天刚刚在Linux中安装了Swift来检查它。

尝试一个小例子的currying会导致警告curry的语法将来会发生变化,但是我找不到任何关于这个新语法的内容。

我尝试过的例子:

func do_stuff(x: Int) (y: Int) (z: Int) -> Int {
    return (x - y) * z
}
let curry_fun = do_stuff(42)
let x = curry_fun(y: 7)(z: 3)

编译此示例会产生以下警告:

warning: curried function declaration syntax will be removed in a future version of Swift; use a single parameter list
func do_stuff(x: Int) (y: Int) (z: Int) -> Int {
             ^~~~~~~~~~~~~~~~~~~~~~~~~~
                    ,        ,

那么在未来的swift中,currying会是什么样子?

我确实尝试了类似 func do_stuff(x: Int, y: Int, z: Int) -> Int... 的内容,但是找不到使用该函数进行干扰的方法..

3 个答案:

答案 0 :(得分:20)

仅删除声明语法,例如func(a: Int)(b:Int) -> Int

func curry(a: Int)(b: Int) -> Int {
    return a + b
}

相当于:

func newCurry(a: Int) -> (b: Int) -> Int {
    return { b in
        return a + b
    }
}

答案 1 :(得分:2)

据我了解,他们计划完全删除它。

以下是swift-evolution github repository

的引用
  

Curried函数声明语法func foo(x: Int)(y: Int)的用处有限,并且会产生很多语言和实现复杂性。我们应该删除它。

答案 2 :(得分:0)

Swift3中删除了Curried函数声明语法,我们应该使用参数列表。