Wie auch in anderen Programmiersprachen, gibt es in Swift die Standard-Rechenoperatoren, also +
, -
, *
, /
und %
(Modulo- oder auch Restwertoperator genannt).
In diesem Zusammenhang darf freilich nicht der Zuweisungsoperator =
vergessen werden, mit dem ein Wert einer Variable (oder Konstante) zugewiesen werden kann, z.B.
let x = 100
var y = 42
Bei der Erstzuweisung müssen dabei die Schlüsselwörter let
oder var
genutzt werden, wobei eine Variable, die mit let
deklariert wurde, nicht veränderbar ist, während eine Variable, die mit var
deklariert wurde durchaus eine Neuzuweisung erfahren kann.
let x = 100
x = 200 // -> Fehler
var y = 42
y = 200 // -> 200
Merke: Bei Structs (Int, String, Double, Bool), Enums, Tuples, Arrays, Dictionaries und Sets handelt es sich um Werttypen (value types). Das bedeutet, dass bei einer Zuweisung die Daten kopiert werden.
var a = 70
var b = a
a = 70 + 30
print(a) // -> 100
print(b) // -> 70
Wie man dem Beispiel entnehmen kann, bleibt nach der Zuweisung var b = a
der ursprüngliche Wert 70 erhalten. Da es sich um einen Werttyp handelt sind die Ausgangsdaten und die kopierten Daten unabhängig voneinander.
Das vorangegangene Beispiel zeigt außerdem die Verwendung des Additions-Operators +
. Auf die gleiche Weise kommen auch die anderen Rechenoperatoren zur Anwendung, z.B.
let r = 4 * 4 // -> 16
let s = 10 / 5 // -> 2
Mithilfe des Modulo-Operators kann der Restwert einer Division ermittelt werden:
let s = 10 % 3 // -> 1
Folgende Multiplikation wird aber zum Scheitern verurteilt sein:
let a = 4 // -> Int-Typ
let b = 1.7 // -> Double-Typ
let c = a * b // -> Fehler
Denn hier wird versucht Werte unterschiedlichen Typs zu multiplizieren (Int und Double). Swift kennt keine automatische Typumwandlung. Diese muss vielmehr explizit erfolgen. Dies macht man, indem der Typ, in den konvertiert werden soll, vorangestellt wird:
let c = Double(a) * b // -> 6.8
oder:
let c = a * Int(b) // -> 4
Bei der Umwandlung in den Integer-Typ nimmt Swift eine Verkürzung vor. Die Nachkommastellen werden einfach entfernt. Aus 1.7
wird also 1
, was hier zu einer Multiplikation von 4 * 1
führt.
Mit dem Additionsoperator +
können übrigens nicht nur Zahlen, sondern auch Zeichenketten „addiert“, sprich zusammengefügt werden:
let a = "Eine "
let b = "zusammengesetzte "
let c = "Zeichenkette."
let d = a + b + c
print(d) // -> Eine zusammengesetzte Zeichenkette.