Dies ist ein Verschluss erstellt und an der gleichen Stelle verwendet. Sie verwenden es zur Initialisierung, wenn Sie nicht alles in einen einzelnen Ausdruck einfügen können. Diese Funktion ist hilfreich, wenn schreibgeschützte Felder (let
, im Gegensatz zu var
) erstellt werden.
Im obigen Fall erstellt der Code eine Schaltfläche und führt dann eine zusätzliche Konfiguration durch, bevor das Ergebnis zurückgegeben wird. Dies ist eine gute Möglichkeit, Code von init
in Code-Blöcke in der Nähe des Initialisierungsortes zu verschieben.
Eine Möglichkeit, zu visualisieren, was los ist eine benannten Funktion zu denken, die die gleiche Sache tut:
func makeWhiteButton() -> UIButton {
let button = UIButton(type: .system)
button.backgroundColor = UIColor.White
button.setTitle("Register", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
button.setTitleColor(.white, for: .normal)
return button
}
Jetzt können Sie es in einem Initialisierer verwenden
let loginRegisterButton:UIButton = makeWhiteButton()
Der Code aus post macht das gleiche mit einer anonymen "closure" -Funktion. Die Klammern nach dem Closure-Block sind aus demselben Grund wie die Klammern nach makeWhiteButton
oben.
danke, das macht Sinn – Ninja13
@ Ninja13 Sie sind herzlich willkommen! Wenn Sie keine weitere Hilfe benötigen, akzeptieren Sie die Antwort, indem Sie auf das graue Häkchen daneben klicken. Dadurch würden andere wissen, dass Ihr Problem gelöst ist, und Sie erhalten ein neues Abzeichen auf Stack Overflow. – dasblinkenlight