Neuerungen in Swift 5.1

Die finale Veröffentlichung der neuen Swift-Version 5.1 steht kurz bevor. Der Golden Master von Xcode 11 mitsamt Swift 5.1 ist bereits verfügbar und lässt registrierte Apple Developer bereits dessen Neuerungen nutzen. In diesem Artikel möchte ich euch eine Auswahl jener Neuerungen vorstellen.

Funktionen mit Implicit Return

Den sogenannten Implicit Return kennt man in Swift bereits aus Closures. Er erlaubt es, auf die Angabe des Schlüsselworts return zu verzichten, wenn ein Closure über nur einen einzigen Befehl verfügt der gleichzeitig für die Erzeugung des zurückzugebenden Werts verantwortlich ist.

Genau diese Technik steht uns nun mit Swift 5.1 auch in Funktionen und Methoden zur Verfügung. Setzt sich die Implementierung einer solchen aus lediglich einem Befehl zusammen, können wir nun auf die explizite Angabe von return verzichten. Ein Beispiel dazu seht ihr im folgenden Listing in der Funktion addition(firstValue:secondValue:):

func addition(firstValue: Int, secondValue: Int) -> Int {
    firstValue + secondValue
}

let result = addition(firstValue: 19, secondValue: 99)
print("result = \(result)")
// result = 118

Es ist übrigens mitnichten ein Fehler, return weiterhin in solchen Fällen explizit zu setzen. Aber es ist mit Swift 5.1 schlicht nicht mehr notwendig und kann so den Code ein wenig entschlacken.

Shorthand Getter

In eine vergleichbare Kerbe wie der Implicit Return in Funktionen schlägt der neue Shorthand Getter für Computed Properties. Das Prinzip ist dasselbe: Verfügt der Getter einer Computed Property über nur einen einzigen Befehl, kann auf die explizite Verwendung von return zur Rückgabe des passenden Ergebnisses verzichtet werden. Ein Beispiel hierzu liefert das folgende Listing:

struct Person {
    
    var firstName: String
    
    var lastName: String
    
    var fullName: String {
        "\(firstName) \(lastName)"
    }
    
}

let me = Person(firstName: "Thomas", lastName: "Sillmann")
print(me.fullName)
// Thomas Sillmann

Die Computed Property fullName gibt die Zusammensetzung von firstName und lastName zurück. Da dies in einem einzigen Befehl geschieht, braucht es kein return.

Aktualisierter Memberwise Initializer

Auch der Memberwise Initializer erfährt eine Optimierung in Swift 5.1. Der erlaubt es ab jetzt, auf die Übergabe von Werten für Parameter zu verzichten, wenn die über einen Standardwert verfügen. Solche Parameter können im Memberwise Initializer nun einfach ausgelassen werden, was – abhängig von der jeweiligen Structure – eine Vielzahl an Kombinationen zum Einsatz des Memberwise Initializers erlaubt.

Zur Verdeutlichung dieser Neuerung zeigt das folgende Listing einige Beispiele. Basis ist eine Structure namens Person mit zwei Stored Properties; beide verfügen über einen Standardwert. Daraus ergeben sich insgesamt vier mögliche Konstellationen, wie sich mithilfe des Memberwise Initializers eine neue Person-Instanz erzeugen lässt.

struct Person {
    
    var firstName = "Max"
    
    var lastName = "Mustermann"
    
}

let somePerson1 = Person()
// Max Mustermann

let somePerson2 = Person(firstName: "Thomas")
// Thomas Mustermann

let somePerson3 = Person(lastName: "Sillmann")
// Max Sillmann

let somePerson4 = Person(firstName: "Thomas", lastName: "Sillmann")
// Thomas Sillmann

Fazit

Swift 5.1 weiß durch kleinere Optimierungen und Änderungen zu beeindrucken. Dieser Artikel hat einige der Neuerungen gezeigt an denen sehr gut zu erkennen ist, wie die Sprache noch einfacher zu nutzen sein soll. Viele der Änderungen in Swift 5.1 stehen auch in einem direkten Zusammenhang mit dem neuen UI-Framework SwiftUI, das beispielsweise vom Implicit Return in Funktionen und dem optimierten Memberwise Initializer maßgeblich Gebrauch macht.

Euer Thomas


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert