Ich möchte Array-Klasse erweitern, so dass es wissen kann, ob es sortiert ist (aufsteigend) oder nicht. Ich möchte eine berechnete Eigenschaft namens isSorted
hinzufügen. Wie kann ich die Elemente des Arrays als vergleichbar bezeichnen?Array erweitern, um zu prüfen, ob es in Swift sortiert ist?
Meine aktuelle Implementierung in Spielplatz
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
Der FehlerCould not find an overload for '>' that accepts the supplied arguments
Natürlich, ich habe immer noch einen Fehler, da Swift nicht weiß, wie die Elemente miteinander zu vergleichen. Wie kann ich diese Erweiterung in Swift implementieren? Oder mache ich hier etwas falsch?
möglich duplicate of [Wie implementiert man flatten als Erweiterung auf einem Array ohne Typ Casting?] (Http://stackoverflow.com/questions/24564249/how-to-implement-flatten-as-an-extension-on -an-array-ohne-type-casting) – Sebastian
Sie können 'Array' nicht erweitern, aber Sie können eine Funktion implementieren, die auf 'Array ' arbeitet. Werfen Sie einen Blick auf http://StackOverflow.com/A/24565627/1489997 –
Sebastian
@Sebastian Ich denke, der Link, den Sie gaben, ist ganz anders als meine Absicht. Es ist ziemlich einfach, Kategorien für diese Art von Dingen in obj-c zu erstellen, also dachte ich, dass es in Swift so trivial sein sollte. –