Swift im Detail

The Good, the Bad and the Ugly

Samuel Mellert


Die deutlich gefälligere Syntax hebt Swift auf ein ähnliches Niveau wie etablierte Sprachen à la Java, Ruby oder C#, ohne dabei jedoch auf eher gewöhnungsbedürftige Konzepte wie einrückungsbasierte Codeblöcke zu setzen, die man z. B. aus Python kennt. Obwohl Swift eine statisch typisierte Sprache ist, fühlt sie sich durch die Verwendung von Typinferenz deutlich dynamischer an als andere Sprachen (beispielsweise Java). Ein gelungener Mittelweg sozusagen.

Die Syntax

Die in Objective-C deutlich limitierten Konstrukte und Enumerationen wurden in Swift neu belebt und sind nun an vielen Stellen eine echte Alternative zu Klassen. So können Structs nun auch eigene Funktionalität in Form von Methoden besitzen, mit Initializern konfiguriert werden und Protokolle implementieren. Enumerationen (**enum**) bieten mit Associated Values und den mächtigen Switch-Anweisungen in Swift viele neue Möglichkeiten.

Von manchen wurde Swift bereits als funktionale Programmiersprache deklariert. Dies ist nur in Teilen richtig. Swift ermöglicht grundsätzlich zwar auch die Implementierung von funktionalen Lösungen, kann aber ebenfalls als reguläre, imperativ objektorientierte Programmiersprache verwendet werden. Richtig ist jedoch, dass in Swift einige der Paradigmen der funktionalen Programmierung stärker betont werden. So werden Entwickler stärker motiviert, wo möglich, Konstanten statt Variablen zu verwenden und, wo geeignet, auf einfache Value Objects, ggf. sogar in Form von Immutables, zu setzen. Dies reduziert die Fehleranfälligkeit und schafft zudem die Möglichkeit für Laufzeitoptimierungen. Jedoch ist fraglich, ob daraus zwingend eine Renaissance der funktionalen Programmierung in Swift werden muss.

Sehen wir uns einige der grundlegenden Sprachkonstrukte einmal näher an.

Konstanten

Eine Konstante wird durch das Schlüsselwort let eingeleitet:

let age = 34let 🐶🐮 = "dogcow"

Handelt es sich bei der Konstanten um einen Collection-Typ, so wird sie als Immutable Collection angelegt:

let array = ["Hans", "Peter"]

Zur Deklaration von veränderlichen Typen müssen diese als Variable deklariert werden:

var array = ["Hasn", "Peter"]array[0] = "Hans"  // ["Hans", "Peter"]

Typinferenz

Wie Ihnen an den oben genannten Beispielen wahrscheinlich schon aufgefallen ist, muss in Swift der Typ einer Property oder Variable nicht explizit deklariert werden, wenn er aus der Zuweisung eindeutig hergeleitet werden kann. So kann also an Stelle von let age: Int = 34 auf let age = 34 verkürzt werden. Im Fall unsere...

Swift im Detail

The Good, the Bad and the Ugly

Samuel Mellert


Die deutlich gefälligere Syntax hebt Swift auf ein ähnliches Niveau wie etablierte Sprachen à la Java, Ruby oder C#, ohne dabei jedoch auf eher gewöhnungsbedürftige Konzepte wie einrückungsbasierte Codeblöcke zu setzen, die man z. B. aus Python kennt. Obwohl Swift eine statisch typisierte Sprache ist, fühlt sie sich durch die Verwendung von Typinferenz deutlich dynamischer an als andere Sprachen (beispielsweise Java). Ein gelungener Mittelweg sozusagen.

Die Syntax

Die in Objective-C deutlich limitierten Konstrukte und Enumerationen wurden in Swift neu belebt und sind nun an vielen Stellen eine echte Alternative zu Klassen. So können Structs nun auch eigene Funktionalität in Form von Methoden besitzen, mit Initializern konfiguriert werden und Protokolle implementieren. Enumerationen (**enum**) bieten mit Associated Values und den mächtigen Switch-Anweisungen in Swift viele neue Möglichkeiten.

Von manchen wurde Swift bereits als funktionale Programmiersprache deklariert. Dies ist nur in Teilen richtig. Swift ermöglicht grundsätzlich zwar auch die Implementierung von funktionalen Lösungen, kann aber ebenfalls als reguläre, imperativ objektorientierte Programmiersprache verwendet werden. Richtig ist jedoch, dass in Swift einige der Paradigmen der funktionalen Programmierung stärker betont werden. So werden Entwickler stärker motiviert, wo möglich, Konstanten statt Variablen zu verwenden und, wo geeignet, auf einfache Value Objects, ggf. sogar in Form von Immutables, zu setzen. Dies reduziert die Fehleranfälligkeit und schafft zudem die Möglichkeit für Laufzeitoptimierungen. Jedoch ist fraglich, ob daraus zwingend eine Renaissance der funktionalen Programmierung in Swift werden muss.

Sehen wir uns einige der grundlegenden Sprachkonstrukte einmal näher an.

Konstanten

Eine Konstante wird durch das Schlüsselwort let eingeleitet:

let age = 34let 🐶🐮 = "dogcow"

Handelt es sich bei der Konstanten um einen Collection-Typ, so wird sie als Immutable Collection angelegt:

let array = ["Hans", "Peter"]

Zur Deklaration von veränderlichen Typen müssen diese als Variable deklariert werden:

var array = ["Hasn", "Peter"]array[0] = "Hans"  // ["Hans", "Peter"]

Typinferenz

Wie Ihnen an den oben genannten Beispielen wahrscheinlich schon aufgefallen ist, muss in Swift der Typ einer Property oder Variable nicht explizit deklariert werden, wenn er aus der Zuweisung eindeutig hergeleitet werden kann. So kann also an Stelle von let age: Int = 34 auf let age = 34 verkürzt werden. Im Fall unsere...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang