Dein erstes Swift-Programm
Struktur, print, String-Interpolation und die wichtigsten Swift-Grundbausteine in einem kleinen, echten Programm.
Inhaltsverzeichnis
Dein erstes Swift-Programm
Swift ist angenehm gesprรคchig - auch โHello Worldโ laesst sich in eine einzige Zeile packen. Schauen wir uns an, wie das geht und wie du es sinnvoll erweiterst.
Hello, World!
Die klassische Version mit Swift Package Manager (Datei Sources/main.swift):
print("Hallo, Swift!")
Das ist alles. Kein Boilerplate, kein main(), keine Klassen. Swift erlaubt Top-Level Code - ausfuehrbare Anweisungen direkt in der Datei.
swift run
# Hallo, Swift!
Variablen und print
let name = "Anna"
let alter = 28
print("Hallo, \(name)!")
print("Du bist \(alter) Jahre alt.")
let= Konstante (kann nicht geaendert werden)var= Variable (veraenderlich)\(...)ist String-Interpolation - viel lesbarer als Konkatenation
Swift bevorzugt let
Eine der ersten Gewohnheiten, die du in Swift lernen wirst: Nutze let standardmaessig, var nur wenn du den Wert wirklich aendern musst. Das macht deinen Code sicherer und besser lesbar.
let pi = 3.14159 // Konstante
var zaehler = 0 // Variable
zaehler += 1
// pi = 3.14 -> FEHLER
Nutzereingabe
print("Wie heisst du? ", terminator: "")
if let name = readLine() {
print("Hallo, \(name)!")
}
readLine()liest eine Zeile von stdin und liefert ein Optional (String?) zurueckif let name = ...entpackt das Optional sicher
Mehr zu Optionals im naechsten Kapitel.
Einfache Berechnungen
let preis = 19.99
let mwstSatz = 0.19
let brutto = preis * (1 + mwstSatz)
print("Brutto: \(brutto)")
// Brutto: 23.7881
// Formatierung
let formatiert = String(format: "%.2f", brutto)
print("Brutto: \(formatiert) EUR")
// Brutto: 23.79 EUR
Funktionen
func addieren(_ a: Int, _ b: Int) -> Int {
return a + b
}
print(addieren(3, 4)) // 7
- Der
_unterdrueckt Argument-Labels beim Aufruf - Der Rueckgabetyp kommt nach
->
Mit Argument-Labels:
func gruessen(person name: String) {
print("Hallo, \(name)!")
}
gruessen(person: "Anna")
Argument-Labels machen Swift-Code sehr selbstbeschreibend.
Ein kleines Beispielprogramm
let namen = ["Max", "Anna", "Leo"]
for name in namen where name.count > 3 {
print("Hallo, \(name)!")
}
// Hallo, Anna!
// Hallo, Leo!
let zahlen = (1...10).filter { $0 % 2 == 0 }
print("Gerade Zahlen: \(zahlen)")
// Gerade Zahlen: [2, 4, 6, 8, 10]
Was passiert hier?
for name in namen where ...iteriert mit Filter(1...10)ist eine ClosedRange.filter { $0 % 2 == 0 }nutzt eine Closure -$0ist das erste Argument
Das Beispiel zeigt, warum Swift-Code oft so kompakt ist.
Semikolons? Nein.
Swift braucht keine Semikolons am Zeilenende. Nur wenn du mehrere Anweisungen auf eine Zeile packen willst:
let a = 1; let b = 2; print(a + b)
Das ist aber ungewohnt und wird selten genutzt.
Kommentare
// Einzeiliger Kommentar
/*
Mehrzeiliger
Kommentar
*/
/// Dokumentation fuer die naechste Funktion.
func wichtigeFunktion() { }
Der dreifache Slash /// ist ein Doc-Comment, der in Xcode hilfreiche Popups erzeugt.
Exit-Codes
Innerhalb eines Swift-Programms:
import Foundation
guard CommandLine.arguments.count > 1 else {
print("Bitte einen Namen uebergeben")
exit(1)
}
print("Hallo, \(CommandLine.arguments[1])!")
CommandLine.argumentsist ein[String]mit den Argumentenguard ... else { ... }ist das Swift-Idiom fuer fruehe Ausstiege
Zusammenfassung
- Swift erlaubt Top-Level Code - kein
main()noetig letundvarfuer Konstanten / Variablen, bevorzugtlet- String-Interpolation mit
\(...) readLine(),print()fuer I/O- Argument-Labels (
_, benannt, benannt anders) fuer selbstdokumentierende Funktionen guardfuer frueh-Ausstiege
Im naechsten Kapitel: Variablen, Datentypen und Optionals - das Herzstueck von Swift.