今天刚刚在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...
的内容,但是找不到使用该函数进行干扰的方法..
答案 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函数声明语法,我们应该使用参数列表。