Skip to main content
 首页 » 编程设计

swift之为什么 Swift 1.2 reduce 会强制我使用 combine : argument name

2024年01月01日60haluo1

这段代码在 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 )。但为什么要改变有关外部参数名称使用的任何内容?

请您参考如下方法:

我就此提交了错误报告,Apple 回复说更改是有意的。在我看来,能够说 reduce(0,+) 是优雅而简洁的,因此 reduce 的 API 应该声明不需要外部参数名称。在 Apple 的声明中,combine: 外部参数名称阐明了参数的用途。我们同意不同意。