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

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

最佳答案

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

关于swift - 为什么 Swift 1.2 reduce 会强制我使用 combine : argument name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29617727/

相关文章:

swift - Task() 正在转义引号

ios - 我如何使用 Codable 来解析这个 JSON?

ios - 尝试使用 Alamofire 放置方法时,JSON 写入 (_SwiftValue) 中的类型无效

ios - 如何获取 UITableView 中可编辑单元格的值? swift

ios - 当用户快速使用核心数据点击索引 0 到 1 时,如何显示不同的照片滤镜选项?

ios - 有没有办法以声明方式获取 UITextField 的文本更新?

ios - 无法解析 RealmSwift 中的格式字符串

swift - Alamofire,对象映射器, Realm : Nested Objects

ios - setVisibleCooperativeBounds 从未设置确切的边界

swift - 保持节点的 X 轴和 Z 轴与地面平行,同时旋转 Y 轴以面向相机