Tuples in Swift

requirements Swift 5 and iOS 12

Arrays wird jeder kennen, aber mit Tuples (deutsch: Tupel) kommt man — als Anfänger — wohl eher selten in Berührung. Betrachten wir als Einstieg in dieses Thema zunächst einige Beispiele:

let numbers = (5, 24, 17)
let towns = ("Madrid", "Palermo")
let country = (name: "Spain", population: 46733038)

Die Werte werden — durch Kommata getrennt — von runden Klammern umschlossen. Wie anhand des, der Variablen country zugewiesen Tuples, erkennbar, können die Werte auch benannt sein (hier: name und population).

Anhand des country-Tuples zeigt sich auch der Unterschied zum Array: Die Elemente eines Tuples können unterschiedlichen Typs sein (hier: String und Integer).

Die Ausgabe der Werte mit print() sieht nun folgendermaßen aus:

print(numbers.0) // -> 5
print(numbers.1) // -> 24

print(towns.0) // -> Madrid

print(country.name) // -> Spain

Auf die Werte kann also über den Index oder die Bezeichnung zugegriffen werden.

Die Werte eines Tuples können unterschiedlichen Variablen zugewiesen werden:

let (a, b) = towns
print(a) // -> Madrid
print(b) // -> Palermo

Es ist auch möglich, Tuples miteinander zu vergleichen:

(5, 24, 17) == (5, 24, 17) // -> true

Abschließend noch der Hinweis, dass es sich bei Tuples um Compound Types handelt, also um Typen ohne Namen. Hierzu zählen übrigens auch Closures.

Bei den übrigen in Swift vorkommenden Datentypen handelt es sich hingegen um Named Types.