【发布时间】:2017-05-16 07:49:39
【问题描述】:
我目前正在将当前项目迁移到 Swift3(从 2.3 开始),并且我的 Sequence 类型的扩展存在一些问题。
该扩展旨在从源数组返回唯一值的字典。
即var myArray = ["Apple","Apple","Orange","Banana","Banana"]
“.freq”扩展名返回以下格式的字典。
["Apple":2,"Orange":1,"Banana":2]
这是当前有效的 Swift 2.3 语法:
extension Sequence where Self.Iterator.Element: Hashable {
func freq() -> [Self.Iterator.Element: Int] {
return reduce([:]) { ( accu: [Self.Iterator.Element: Int], element) in
accu[element] = (accu[element]? + 1) ?? 1
return accu
}
}
}
问题是由于语法更改,accu[element] = (accu[element]? + 1) ?? 1 行在 Swift 3 中不起作用:
不能通过下标赋值:accu 是一个 let 常量
我确信它可能是一个简单的修复,但似乎无法在 swift3 中找到相关示例。
【问题讨论】:
标签: ios dictionary swift3