Die Syntax von Swift macht Gebrauch von unzähligen Sonderzeichen und Zeichenkombinationen — nicht nur für Operatoren, sondern auch für diverse andere Sprachfunktionen. Ich habe mich bemüht, hier eine möglichst vollständige Referenz aller Zeichen und ihrer Bedeutung je nach Kontext zusammenzustellen. Wenn etwas fehlt, melden Sie sich bitte, entweder per Mail an kontakt@kofler.info oder per Kommentar am Ende dieses Beitrags.
Sonderzeichen
+ Vorzeichen, Additions-Operator für Zahlen, Zeichenketten
und Arrays
++ Inkrement (Postfix/Prefix)
+= Addition und Zuweisung für Zahlen, Zeichenketten und
Arrays, z.B. a+=3
- Vorzeichen, Subtraktions-Operator
-- Dekrement (Postfix/Prefix)
-= Subtraktion und Zuweisung
-> Rückgabetyp von Funktion,
z.B. func myFunc() -> Int {...}
* Multiplikation
*= Multiplikation und Zuweisung
*/ beendet Kommentar, der mit /* begann
/ Division
/= Division und Zuweisung
// Kommentar bis zum Ende der Zeile
/* Kommentar bis */
% Restwert
%= Restwert mit Zuweisung
= Zuweisung
== Vergleichs-Operator (vergleicht Inhalt)
=== Vergleichs-Operator (testet, ob gleiche Objektinstanz)
& binäres Und
& Referenzparameter, z.B. swap(&a, &b)
&= binäres Und und Zuweisung
&& logisches Und mit Short-Circuit-Logik
&+ Addition ohne Überlaufkontrolle
&- Subtraktion ohne Überlaufkontrolle
&* Multiplikation ohne Überlaufkontrolle
&/ Division ohne Überlaufkontrolle
&% Restwert ohne Überlaufkontrolle
| binäres Oder
|= binäres Oder und Zuweisung
|| logisches Oder mit Short-Circuit-Logik
^ binäres Exklusiv-Oder
^= binäres Exklusiv-Oder und Zuweisung
< Kleiner-Operator
<= Kleiner-Gleich-Operator
<< Bitshift links
<> generischer Parameter, z.B. func myFunc<T>(...)
> Größer-Operator
>= Größer-Operator
>> Bitshift rechts
>>> Bitshift rechts ohne Vorzeichen
. Zugriff auf Variablen und Methoden, z.B. obj.methode()
. Dezimalpunkt, z.B. 1.23
..< Half-Open-Range (1..<4 entspricht Range(start: 1,end: 4))
..< HalfOpenInterval (1.0..<3.4 entspricht
HalfOpenInterval(1.0, 3.4))
... Closed-Range (1...4 entspricht Range(start: 1,end: 4))
... ClosedInterval
: Datentyp, z.B. var x:Int
: Key/Value-Paare, z.B.
var dict = ["rot":0xff0000, "blau":0x0000ff]
: Vererbung, z.B. class myClass : Superclass { ... }
: Protokoll,
z.B. struct myStruct : Protocol1, Protocol2 { ... }
; Trennung mehrerer Anweisungen in einer Zeile,
z.B. a=3; b=5
; Trennung von Initialisierung, Bedingung und
Inkrement in for-Schleifen
! logisches Nicht
! Kennzeichnung von Optionals, z.B. var x:Int!
! explizites Unwrapping von Optionals, z.B. x!
!= Ungleichheitsoperator (vergleicht Inhalt)
!== Ungleichheitsoperator (testet, ob unterschiedliche
Objektinstanz)
? : Ternärer Operator, z.B. n>0 ? "ok" : "fehler"
? Kennzeichnung von Optionals, z.B. var x:Int?
?. Optional Chaining, also optional?.method()?.property ...
?? Nil Coalescing, z.B. result = var ?? -1
() Gruppierung von Ausdrücken, z.B. 2 * (3 + 4)
() Parameterliste, z.B. sqrt(2.3)
() Tupel, z.B. ("x", "y", 23)
{} Gruppierung von Code, z.B. if true { bla }
{} Closures, z.B. ar.sort( {$0<$1} )
[] Zugriff auf Array-Elemente, z.B. arr[3]
[] Zugriff auf Teilzeichenketten,
z.B. s[s.startIndex..<s.endIndex]
[] Initialisierung von Arrays und Dictionaries, z.B.
var ar = [1, 2, 3] oder var dict = ["rot":"red"]
$ Closure-Parameter, z.B. ar.sort( {$0<$1} )
@ Attribut, z.B. @autoclosure
_ optionales Trennzeichen in mehrstelligen Zahlen,
z.B. 1_234_567
_ allgemeines Pattern-Zeichen, z.B. for _ in 1...3
_ benannte Parameternamen vermeiden,
z.B. func myFunc(_ para:String)
~ binäres NOT (invertiert alle Bits einer ganzen Zahl)
~= Vergleichsoperator für switch/case
~< nicht dokumentiert, siehe
http://stackoverflow.com/questions/26758297
http://natecook.com/blog/2014/11/swifts-elusive-tilde-gt-operator
# benannte Parameter erzwingen,
z.B. func myFunc(#name:String)
nur in Swift 1.n, in Swift 2.0 gestrichen
Literale
123 ganze Zahl
1_234 ganze Zahl mit Trennung der Ziffern
0xa0 ganze Zahl, hexadezimale Darstellung
0o77 ganze Zahl, oktale Darstellung
0b1101 ganze Zahl, binäre Darstellung
0.1 Fließkommazahl
1.2e3 Fließkommazahl in Exponentialdarstellung
1.2E3 wie oben
0x10p3 Fließkommazahl in hexadezimaler
Exponentialdarstellung (16*2^3 = 128.0)
0x10P3 wie oben
true wahr
false falsch
nil nicht initialisiert, nur für Optionals
"" Zeichenketten, z.B. "abc"
"\0" Null-Zeichen (Code 0)
"\t" Tabulator (Code 9)
"\n" Line Feed (Code 10)
"\r" Carriage Return (Code 13)
"\"" doppeltes Anführungszeichen (Code 34)
"\'" einfaches Anführungszeichen (Code 39)
"\\" Backslash (Code 94)
"\u{hexcode}" Unicode-Zeichen mit dem angegebenen Code
"\(ausdruck)" wertet den Ausdruck aus (String Interpolation)