Type Alias
Willkommen in diesem Tutorial über die Möglichkeit ein Type Alias zu definieren.
Was ist ein Alias? Ein Alias ist ein Pseudonym. Also ein Begriff der das gleiche bedeutet wie ein anderer. Ein Beispiel hierfür wäre zum Beispiel das Wort Krawatte was andere auch als Schlips bezeichnen.
Für diesen Teil gibt es auch ein Video Tutorial hier auf YouTube.
In Swift können wir Datentypen ebenfalls einen eigenes Pseudonym geben. Dies hat für einige Anwendungsfälle einige schöne Vorteile. Vor allem im Umgang mit Zahlen hat man immer wieder die gleichen wiederkehrenden Datentypen wie Float , Double , Integer und andere. Es ist manchmal aber Sinnvoll diesen einen anderen Namen zu geben damit Ihre Aufgabe noch eindeutiger ist und auch späteres Refactoring ein Kinderspiel ist.
Wenn wir zum Beispiel mit Audio-Daten arbeiten reden wir häufig von Audio Samples. Diese Samples sind zum Beispiel die Daten die wir an die Soundkarte schicken um Sie zu hören. Diese möchte man davor aber manipulieren um sie vielleicht lauter oder leiser zu machen.
Eines dieser Audio Samples soll im Code jetzt aber nicht einfach deklariert sein als
var audioSample: Int16 = GetCurrentAudioSample() sondern wir möchten statt
Int16 lieber
AudioSample als Typ haben. Das erreichen wir durch einen Type Alias auch genannt Type identifier.
Schauen wir uns hierzu folgendes Beispiel an.
1 2 3 4 5 6 7 |
typealias AudioSample = Int16 func GetAudioSample() -> AudioSample { return 123 } let myAudioSample: AudioSample = GetAudioSample() |
Wir definieren einen Typen Namens AudioSample mit dem Schlüsselwort typealias . Wie bei einer Variable oder Konstante nutzen wir danach den Zuweisungsoperator und schreiben hinter diesen den Typ für den AudioSample stehen soll. In meinem Beispiel ist dies Int16 .
Diesen Typen können wir nun überall einsetzen wo es vonnöten ist. Als Rückgabewert unserer Funktion oder auch für unsere Konstante AudioSample.
In meinem Beispiel habe ich bewusst einen Fehler gemacht, denn mein AudioSample soll nicht ein Int16 sonder ein UInt16 sein. Stellen Sie sich vor das all Ihre Variablen bereits mit einem Int16 deklariert wurden sind und Sie müssten diese jetzt überall ändern. Dank dem Type Alias müssen wir aber nur an einer Stelle eingreifen. Ebenfalls beachtenswert und wissenswert ist es das ein Type Alias immer alle Funktionalitäten des Datentypes hat, den wir Ihm zuweisen.
Schauen wir uns dafür die aktualisierte Version unseres Programmcodes von oben an und genießen es das wir nicht an allen Stellen den Typ ändern mussten.
1 2 3 4 5 6 7 |
typealias AudioSample = UInt16 func GetAudioSample() -> AudioSample { return 123 } let myAudioSample: AudioSample = GetAudioSample() |
Weiter Beispiele
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// AudioSample ist ein Alias von UInt16 mit allen Funktionen typealias AudioSample = UInt16 print("Max AudioSample \(AudioSample.max) - Max UInt16 \(UInt16.max)") // Der Typ kann auch ein Tuple sein für z.B. Koordinaten typealias Koordinate = (Int, Int) var meineKoordinate = Koordinate(12,15) print("X:\(meineKoordinate.0) Y:\(meineKoordinate.1)") // Natürlich funktionieren auch benannte Tuples typealias BennanteKoordinate = (x: Int, y: Int) var bessereKoordinate = BennanteKoordinate(128, 256) print("X:\(bessereKoordinate.x) Y:\(bessereKoordinate.y)") |
Wie geht es weiter?
Wir nähern uns dem Ende unseres zweiten Kapitels. In unserer nächsten Lektion widmen wir uns dem Thema Optionals.
1 Comment
Hallo Stefan, erstmal ein großes Lob! Deine Tutorials sind sehr interessant und vor allem verständlich.
Eine Frage zu dem Thema Typealias. Ist es möglich bei den benannten Tupels die Benennung zu sehen wenn man die Type, wie in deinem Beispiel, BenannteKoordinaten aufruft?