"Ambiguous use of prefix" 编译器错误 Swift 3
"Ambiguous use of prefix" compiler error with Swift 3
我刚刚将我的项目从 Swift 2.2 迁移到 Swift 3.0 和 Xcode 8 beta。
我有类似于以下代码的内容(您可以将其粘贴到 playground 中):
import Foundation
let datesWithCount: [(Date, Int)] = [(Date(), 1), (Date(), 2), (Date(), 3)]
let dates: [Date] = datesWithCount.sorted {
[=12=].0 < .0
}.prefix(1).map {
return [=12=].0
}
在Swift 2.2 中编译正常。但是,使用 Swift 3.0 我得到错误
Ambiguous use of 'prefix'
在 Swift 3.0 中编译它的唯一方法是将地图拆分成单独的行:
let sortedDatesWithCount = datesWithCount.sorted {
[=13=].0 < .0
}.prefix(1)
let mappedDates = sortedDatesWithCount.map {
return [=13=].0
}
顺便说一句,在实际代码中,我从 map
而不是 Date
返回 NSNotification
个对象,但错误是相同的。我只是在这里使用 Date
来简化示例。
有什么方法可以将其编译为一个内衬?
更新:为 Swift 项目创建了 JIRA。
如果在将 ArraySlice 传递给 map
之前将 ArraySlice 制成数组,它会起作用:
let dates: [Date] = Array(datesWithCount.sorted {
[=10=].0 < .0
}.prefix(1)).map { return [=10=].0 }
这看起来像编译器中的类型推断错误。
我刚刚将我的项目从 Swift 2.2 迁移到 Swift 3.0 和 Xcode 8 beta。
我有类似于以下代码的内容(您可以将其粘贴到 playground 中):
import Foundation
let datesWithCount: [(Date, Int)] = [(Date(), 1), (Date(), 2), (Date(), 3)]
let dates: [Date] = datesWithCount.sorted {
[=12=].0 < .0
}.prefix(1).map {
return [=12=].0
}
在Swift 2.2 中编译正常。但是,使用 Swift 3.0 我得到错误
Ambiguous use of 'prefix'
在 Swift 3.0 中编译它的唯一方法是将地图拆分成单独的行:
let sortedDatesWithCount = datesWithCount.sorted {
[=13=].0 < .0
}.prefix(1)
let mappedDates = sortedDatesWithCount.map {
return [=13=].0
}
顺便说一句,在实际代码中,我从 map
而不是 Date
返回 NSNotification
个对象,但错误是相同的。我只是在这里使用 Date
来简化示例。
有什么方法可以将其编译为一个内衬?
更新:为 Swift 项目创建了 JIRA。
如果在将 ArraySlice 传递给 map
之前将 ArraySlice 制成数组,它会起作用:
let dates: [Date] = Array(datesWithCount.sorted {
[=10=].0 < .0
}.prefix(1)).map { return [=10=].0 }
这看起来像编译器中的类型推断错误。