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
Schreibe einen Kommentar