Я только что перенес свой проект со Swift 2.2 на Swift 3.0 с бета-версией Xcode 8.
У меня есть что-то похожее на следующий код (вы можете вставить его на игровую площадку):
import Foundation
let datesWithCount: [(Date, Int)] = [(Date(), 1), (Date(), 2), (Date(), 3)]
let dates: [Date] = datesWithCount.sorted {
$0.0 < $1.0
}.prefix(1).map {
return $0.0
}
В Swift 2.2 это скомпилировано нормально. Однако с Swift 3.0 я получаю сообщение об ошибке
Неоднозначное использование «префикса»
Единственный способ скомпилировать это в Swift 3.0 — разделить карту на отдельную строку:
let sortedDatesWithCount = datesWithCount.sorted {
$0.0 < $1.0
}.prefix(1)
let mappedDates = sortedDatesWithCount.map {
return $0.0
}
Кстати, в реальном коде я возвращаю NSNotification
объектов из map
, а не Date
, но ошибка та же. Я просто использовал Date
здесь, чтобы упростить пример.
Есть ли способ заставить это скомпилировать как один вкладыш?
ОБНОВЛЕНИЕ: Создан JIRA для проекта Swift.