100 Days of Swift - Tag 002 - Erweiterte Datentypen

100 Days of Swift - Tag 002 - Erweiterte Datentypen

Arrays

Wenn wir Daten zusammen fasen möchten können wir diese in einem Array zusammenfassen.

let mario = "Super Mario"
let luigi = "Luigi"
let toat = "Toat"

let team = [mario, luigi, toat]

Wollen wir jetzt aus werde darauf zugreifen, nutzen wir den Index. Wir dürfen allerdings nicht außerhalb des Indexes gehen, sonst stürzt unser Programm ab.

print(team[0]) // "Super Mario"
print(team[1]) // Luigi
print(team[2]) // Toat
print(team[3]) // error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION

Auch der Typ kann hinzugefügt werden, allerdings muss dieser immer in []. Und Arrays können immer nur einen Typen haben.

let team2: [String] = [mario, luigi, toat]

Sets

Sammlungen von Daten können als Sets dargestellt werden. Diese Funktionen so ähnlich wie Arrays, haben aber zwei unterschiede.

  1. Die Daten sind in keiner Reihenfolge
  2. Keine Daten können zwei mal auftauchen.
 let teamSet = Set([mario, luigi, toat]) // {"Toat", "Luigi", "Super Mario"}
let teamSet2 = Set([mario, luigi, toat, luigi, mario]) // {"Luigi", "Super Mario", "Toat"}

Wir können Daten via Index aus dem Set auslesen.

Tuples

Mit Tulpen kann man mehrere Werte in einem Wert speichern. Fast wie in Arrays, nur anders.

  1. Es können keine Werte hinzu oder weg genommen werden.
  2. Die Werte haben immer den Typ mit den sie erschaffen worden sind.
  3. Man kann auf sie über den Index oder dem Namen zugreifen.
var mario = (first: "Super", last: "Mario")
mario.0 // "Super
mario.last // "Mario"

Array vis Sets vs Tuples

Arrays

Sollten genutzt werden wenn die es doppelte Werte geben kann/muss oder die Reihenfolge von Relevanz ist.

Sets

Sollten wir nutzen wenn wir einzigartige Werden haben oder wir extrem schnell nachschauen müssen ob sich darin ein Wert befindet.

Tuples

Sollten wir nutzen wenn es eine klare Anzahl an Werten gibt welche ebenfalls präzise benannt sind.

Dictionaries

Dictionaries sind fast wie Arrays, allerdings greift man auf sie nicht über einen Index zu, sondern.. über das was man möchte.

let marioGames = [
	"NES": "Super Mario",
	"SNES": "Super Mario World"
]

marioGames["NES"] // "Super Mario"

Dictionaries und Default Values

Versuchen wir auf einem Wert zuzugreifen der nicht existiert gibt Swift einem nil zurück. Dies kann man umgehen um default: value

marioGames["3DS"] // nil
marioGames["3DS", default: "Don't know"] // "Don't know"

Leere Collection

Wollen wir leere collections erstellen, so ist das auch möglich.

Dictionary

var marioGang = [String: String]()

marioGang["Mario"] = "Super Mario" // Mario dem Dictionary hinzugefügt.

Arrays

var ergebnis = [Int]()

Sets


Leere Sets werden etwas anders erstellt.

var wörter = Set<String>()
var nummern = Set<Int>()

Aufzählungen

Enums definierten Gruppen von zusammengehörigen werten.

enum Resultat {
	case gewonnen
	case verloren
}

var ergebnis = Resultat.gewonnen

Aufzählungen mit Werten

enum Resultat {
	case gewonnen(grund: String)
	case verloren(grund: String)
}

let ergebnis = Resultat.gewonnen(grund: "Weil toll!")

Aufzählungen mit Roh-Werten

Manchmal möchte man direkte werte zu einem enum zuordnen.

enum marioGames: Int {
	case nes
	case snes
	case gamecube
}

let console = marioGames(rawValue: 1) // snes

Man kann aber auch noch direkt die Reihenfolge bestimmten.

enum marioGames: Int {
	case snes
	case gamecube
	case nes = 0
}

let console = marioGames(rawValue: 1) // gamecube
let console = marioGames(rawValue: 0) // nes

KurzGedanke

KurzGedanke

Flexibel, belastbar, innovativ, kreativ, teamfähig, begeisterungsfähig und kreativ. 🏳️‍🌈Pronoun: Es/It🏳️‍🌈