为什么Swift 1.2减少迫使我使用combine:参数名称?

时间:2015-04-14 01:31:20

标签: swift

此代码在Swift 1.1中是合法的:

let arr = Array(1...100)
let sum = arr.reduce(0,+)

但在Swift 1.2中它不再合法。相反,我被迫明确使用combine:参数名称:

let arr = Array(1...100)
let sum = arr.reduce(0,combine:+)

为什么呢?我发现他们的声明没有区别 - 除了新的@noescape属性(很好地解释了here)。但为什么 会改变外部参数名称的使用呢?

2 个答案:

答案 0 :(得分:3)

我提交了一份有关此问题的错误报告,Apple回复称此更改是故意的。在我看来,能够说reduce(0,+)优雅而精辟,因此reduce的API应该声明外部参数名称是不必要的。在Apple的陈述观点中,combine:外部参数名称阐明了参数的用途。我们同意不同意。

答案 1 :(得分:0)

您可以随时使用reduce函数进行序列 - 它们不会强制combine:参数名称。

reduce(1...5, 0, +)