Nehmen wir an, ich habe ein Protokoll und eine Klasse, die diesem Protokoll entspricht.Optionale Verschlüsse in Swift-Protokollen
Erfolgreiche Schließung ist optional, weil nicht jeder Anruf es erfordert. Dies ist zum Beispiel eine häufige Situation, wenn eine solche Funktion aus einem Komponententest aufgerufen wird, weil wir die Erwartung in der Erfolgsschließung erfüllen wollen, während in einem regulären Aufruf eine Erfolgsschließung aus irgendeinem Grund nicht erforderlich ist.
Da in den Protokollen definierten Funktionen kann keine Standardwerte für die Parameter für jeden Aufruf an dem Objekt zu Foo
konform Aufgabe, haben wir es mit der Schließung nennen oder explizit nil als Verschluss Wert übergeben:
var obj: Foo
obj = Bar()
obj.task(nil) //CLOSURE VALUE SET TO nil
obj.task() {} //EMPTY CLOSURE
obj.task() //NOT ALLOWED
Was ist eine empfohlene Methode, um eine solche Struktur zu implementieren? Müssen wir jedes Mal leere Closures übergeben oder Funktionen aufrufen, deren Closure-Wert auf Null gesetzt ist, oder gibt es einen anderen Weg, damit umzugehen?
Warum ist das hässlich? Es gibt viele Fälle, in denen Sie NULL in den Completion-Block von Apfels Methoden übergeben können. Wie zum Beispiel 'vc.navigationController.pushViewController (vc2, animiert: true, completion: nil)' Es bedeutet einfach, dass Sie nichts tun wollen, nachdem die Aufgabe abgeschlossen ist. – NSGangster
Ich stimme für die Schliessung dieser Frage als Primary Opinion- Basiert, weil Antworten nur auf persönlicher Meinung beruhen können, nicht auf Tatsachen. 'Was ist eine empfohlene Methode, um eine solche Struktur zu implementieren? Wenn ich jedes Mal eine leere Schließung verlasse oder Funktionen aufruft, deren Schließungswert auf Null eingestellt ist, ist das irgendwie hässlich. Was für dich hässlich ist oder von jemand anderem empfohlen wird, ist keine Tatsache. – JAL
@JAL meine Meinung ist hier nicht wichtig, ich wollte fragen, ob es eine bessere Möglichkeit gibt, eine solche Struktur zu implementieren. Ich werde die Frage bearbeiten und diesen Satz entfernen – pkacprzak