In Swift 3 wird, wenn ein optionalen Funktionsparameter hat, was der Unterschied zwischen den Funktionen mit:Swift 3 -! vs? für optionale Funktionsparameter
func doThis(num: Int!)
und
func doThat(num: Int?)
In Swift 3 wird, wenn ein optionalen Funktionsparameter hat, was der Unterschied zwischen den Funktionen mit:Swift 3 -! vs? für optionale Funktionsparameter
func doThis(num: Int!)
und
func doThat(num: Int?)
Beide erklären, dass eine optionales num
Int
ist. Wenn Sie Int!
tun, kann es implizit innerhalb Ihrer Funktion ausgepackt werden. Das bedeutet, dass Sie es an Orten verwenden können, an denen eine einfache (nicht optionale) Int
erforderlich ist. In diesem Fall wird es fehlschlagen, wenn es nil
ist.
Mit einem "richtigen" Int?
wird der Compiler Sie nicht num
verwenden, wo ein Int
erforderlich ist und zwingt Sie, zuerst eine Prüfung/Wache einzuschließen.
Das Konstrukt Int!
ist meistens für die Interoperabilität mit Objective-C-Code da, wo nicht klar ist, ob ein Referenztyp optional ist oder nicht. Sie sollten es in neuem Code vermeiden.
Ja, das stimmt mit dem Verhalten überein, das ich beobachte. Vielen Dank. – cdub
Kein Swift-Experte, aber nicht! auspacken optional und? ist optional? – Li357
Sie sollten das gegooglet haben, bevor Sie dieses Zeug in diesem Forum veröffentlichen. Es ist keine sehr schwierige Frage. Optional bedeutet, dass Sie ein Nil aber mit erwarten können! Sie müssen etwas in seinem unwrapped Zustand übergeben, den es stürzt, wenn ein Null übergeben wird –
Meine Frage betrifft die Funktionsdeklaration. – cdub