Ho appena trasferito il mio progetto da Swift 2.2 a Swift 3.0 con Xcode 8 beta.Errore del compilatore "Ambiguo uso del prefisso" con Swift 3
ho qualcosa simile al seguente codice (è possibile incollare questo in un parco giochi):
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
}
In Swift 2.2 questo compilato bene. Tuttavia, con Swift 3.0 ottengo l'errore
uso ambiguo di 'prefisso'
L'unico modo per ottenere questo per compilare a Swift 3.0 è quello di dividere la carta in una riga separata:
let sortedDatesWithCount = datesWithCount.sorted {
$0.0 < $1.0
}.prefix(1)
let mappedDates = sortedDatesWithCount.map {
return $0.0
}
BTW, nel codice vero e sto tornando NSNotification
oggetti dai non map
Date
s, ma l'errore è lo stesso. Ho appena usato Date
qui per rendere l'esempio semplice.
C'è un modo per farlo compilare come un unico rivestimento?
UPDATE: creato un JIRA per il progetto Swift.
Data conforme al protocollo Paragonabile in Swift 3. 'ordinato {$ 0.0 <$ 1.0}' dovrebbe essere sufficiente –
Grazie, non lo sapevo. Questa è una buona notizia! // Sto solo usando il codice di OP, e dicono che Date è solo un esempio comunque. :) – Moritz
Sembra un bug di inferenza di tipo anche per me. Ho intenzione di segnalarlo come tale. @LeoDabus grazie per il suggerimento sull'ordinamento delle date. Il vero codice è in realtà l'ordinamento su Date anche. Il bit di esempio sta restituendo le date dalla mappa. – mluisbrown