Da Swift keine abstrakten Methoden hat, erstelle ich eine Methode, deren Standardimplementierung bedingungslos einen Fehler auslöst. Dies erzwingt, dass eine Unterklasse die abstrakte Methode überschreibt. Mein Code sieht wie folgt aus:Swift überzeugend, dass eine Funktion aufgrund einer geworfenen Exception nie zurückgegeben wird
class SuperClass {
func shouldBeOverridden() -> ReturnType {
let exception = NSException(
name: "Not implemented!",
reason: "A concrete subclass did not provide its own implementation of shouldBeOverridden()",
userInfo: nil
)
exception.raise()
}
}
Das Problem: Da die Funktion einen Wert zurückgeben soll, und die obige Funktion hat keine return
Anweisung, nicht Kompilierung. Ich brauche einen Weg, um den Compiler davon zu überzeugen, dass diese Funktion die Ausführung niemals beenden kann, weil immer ein Fehler auftritt.
Wie könnte dies in Swift getan werden, wenn die gesamte Fehlerbehandlung auf Bibliotheksebene und daher jenseits des Verständnisses des Compilers zu sein scheint? Gibt es irgendeine Funktion auf Sprachenebene, um (hoffentlich elegant) die Ausführung eines Programms zu beenden?
Während Sie Ihre Frage mit einer Lösung selbst beantwortet haben, versuchen Sie ein schlechtes/falsches Problem zu lösen. Es gibt einen Grund, warum Swift keine abstrakten Methoden eingebaut hat. – nhgrif