Ich mache jetzt Swift-Programmierung für ein paar Monate und ich war schon immer neugierig darauf ...
Gibt es einen Vorteil, dem Swift-Compiler den Typ eines Objekts in seiner Deklaration mitzuteilen?
I.e. let image: UIImage = UIImage()
Verglichen damit, den Compiler NICHT zu sagen und ihn zur Laufzeit abzuleiten. I.e let image = UIImage()
Ich würde denken, es wäre effizienter, dem Compiler den Objekttyp mitzuteilen, anstatt ihn auf den Typ schließen zu lassen. Ich weiß, dass diese Frage auch an die Objective-C-Syntax appelliert, also füge ich das in die Tags ein.
Es gibt keinen Laufzeitunterschied zwischen den beiden. Während der Kompilierung leitet Swift den Typ ab und schreibt ihn für Sie ein. Aber einmal kompiliert, sind die beiden Aussagen identisch.
Es ist nur eine Frage der Lesbarkeit und gelegentlich der Compiler-Effizienz.
Lesbarkeit, weil in der Anweisung let image: UIImage = UIImage()
die doppelte Darstellung von UIImage
nur Unordnung ist. Und in Fällen von komplexeren Typen ist es sehr wichtig - niemand möchte let keys: LazyForwardCollection<MapCollectionView<Dictionary<String, Int>, String>> = dict.keys
schreiben, wenn sie let keys = dict.keys
schreiben können.
Effizienz des Compilers, weil Sie gelegentlich feststellen, dass ein besonders ambiger Typ (Literale von Literalen sind dafür berüchtigt), wo viele Überladungen aufgelöst werden müssen, ein Los schneller kompilieren können, wenn Sie den Namen explizit benennen Tippen Sie auf der linken Seite. Aber das ist nur eine Frage, wie schnell es kompiliert, nicht wie schnell es läuft, sobald es kompiliert hat.
Aus Swift-Dokumentation :
Es ist selten, dass Sie in der Praxis Typanmerkungen schreiben müssen. Wenn Sie einen Anfangswert für eine Konstante oder Variable an dem Punkt angeben, an dem sie definiert ist, kann Swift fast immer den Typ für diese Konstante oder Variable ableiten, wie in Geben Sie Sicherheit und Typ Inferenz ein
Es spielt also keine Rolle, ob Sie den Instanztyp deklarieren oder nicht.
Tags und Links ios swift variable-declaration