"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 }

看起来像编译器中的类型推断错误。