Desidero estendere la classe Array in modo che possa sapere se è ordinata (crescente) o meno. Voglio aggiungere una proprietà calcolata denominata isSorted
. Come posso affermare che gli elementi della matrice sono comparabili?Estensione array per verificare se è ordinato in Swift?
mio attuale implementazione in campo da giuoco
extension Array {
var isSorted: Bool {
for i in 1..self.count {
if self[i-1] > self[i] { return false }
}
return true
}
}
// The way I want to get the computed property
[1, 1, 2, 3, 4, 5, 6, 7, 8].isSorted //= true
[2, 1, 3, 8, 5, 6, 7, 4, 8].isSorted //= false
L'erroreCould not find an overload for '>' that accepts the supplied arguments
Certo, ho ancora ottenuto un errore perché Swift non sa come confrontare gli elementi. Come posso implementare questa estensione in Swift? O sto facendo qualcosa di sbagliato qui?
possibile duplicato di [Come implementare flatten come estensione su un array senza type cast?] (Http://stackoverflow.com/questions/24564249/how-to-implement-flatten-as-an-extension-on -an-array-senza-type-casting) – Sebastian
Non è possibile estendere 'Array', ma è possibile implementare una funzione che funziona su 'Array '. Dai un'occhiata a http://stackoverflow.com/a/24565627/1489997 –
Sebastian
@Sebastian Penso che il collegamento che hai dato sia molto diverso dalla mia intenzione. È abbastanza facile creare una categoria per questo tipo di cose in obj-c, quindi ho pensato che fosse così banale in Swift. –