这段代码在 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:
外部参数名称阐明了参数的用途。我们同意不同意。
关于swift - 为什么 Swift 1.2 reduce 会强制我使用 combine : argument name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29617727/