Swift闭包增加超过2个值

Swift闭包增加超过2个值,swift,Swift,我不熟悉swift,尤其是闭包,当我练习求和函数时,我可以添加2个值,但当我尝试添加3个或更多值时,我得到了错误 例: 增加2个有效值 var calculate: (Double,Double)->Double calculate = {$0+$1} print(calculate(4,3)) 但这一个给出了错误 var calculate: (Int,Int,Int)->Int calculate = {$0+$1+$2} print(calculate(5,8,90)

我不熟悉swift,尤其是闭包,当我练习求和函数时,我可以添加2个值,但当我尝试添加3个或更多值时,我得到了错误

例: 增加2个有效值

var calculate: (Double,Double)->Double
calculate = {$0+$1}
print(calculate(4,3)) 
但这一个给出了错误

var calculate: (Int,Int,Int)->Int

calculate = {$0+$1+$2} 

print(calculate(5,8,90))
有什么理由我们不能这样做吗。。你能建议我用闭包的方法吗

谢谢

我更改了您的代码

var calculate: (Int,Int,Int)->Int

calculate = {($0+$1)+$2} 

print(calculate(5,8,90))

->您需要给出圆括号。

在这种情况下,编译器不能正确地复制结果类型。你应该帮点忙:

var calculate: (Int,Int,Int) -> Int
calculate = { Int($0+$1+$2) }
print(calculate(5,8,90)) // "103\n"

在Xcode 8.2.1中适用于我。您得到的错误消息是什么?可能是“对成员“+”的模糊引用”,可以在8.3.2中重现。我在Xcode 8.3.2上,错误是。对成员“+”calculate1={$0+$1+$2}^的模棱两可的引用看起来像一个回归,它在Swift 3.0.2中编译,但在Swift 3.1或4中不编译–您应该这样做。