Menu
CoddyTech

Arbeiten mit Dateien

Teil des Abschnitts Objektorientierte Programmierung der Swift-Journey von Coddy. Lektion 1 von 57.

Reale Programme sind auf mehrere Dateien aufgeteilt. In Swift wird jede .swift-Datei einer App gemeinsam zu einem Modul kompiliert, sodass eine in einer Datei deklarierte Funktion oder ein Typ in jeder anderen Datei ohne Import verwendet werden kann:

// Greeting.swift
func greeting(for name: String) -> String {
    "Hello, \(name)!"
}

// main.swift
print(greeting(for: "Ada"))

Beim Ausführen dieses Programms wird Hello, Ada! ausgegeben: main.swift ruft die Funktion auf, die sich in Greeting.swift befindet.

Nur eine Datei darf Anweisungen auf oberster Ebene enthalten, also Code, der außerhalb einer Funktion oder eines Typs eigenständig ausgeführt wird. Diese Datei ist main.swift, und dort beginnt das Programm. Die anderen Dateien enthalten nur Deklarationen:

// Greeting.swift
func greeting(for name: String) -> String { "Hello, \(name)!" }
// print("hi")      // Fehler: Anweisungen sind hier auf der obersten Ebene nicht erlaubt

// main.swift
let name = readLine() ?? "friend"   // Code auf der obersten Ebene ist in main.swift erlaubt
print(greeting(for: name))

Das übliche Layout sieht einen Typ pro Datei vor, benannt nach dem Typ: Dog.swift enthält Dog, Account.swift enthält Account. In den Aufgaben in diesem Abschnitt kommt dein Code in diese Dateien, und main.swift enthält den bereitgestellten Ein-/Ausgabecode, den du normalerweise nicht bearbeiten kannst. Der Editor zeigt jede Datei als Tab an.

Dog.swift        // class Dog { ... }
Account.swift    // struct Account { ... }
main.swift       // liest die Eingabe und gibt die Ergebnisse aus

Die Zugriffskontrolle gilt auch für Dateien. private und fileprivate verbergen eine Deklaration vor anderen Dateien, während der Standardwert internal sie in jeder Datei des Moduls sichtbar macht:

// Secret.swift
fileprivate let salt = "x7"          // Nur diese Datei kann darauf zugreifen
func hashed(_ s: String) -> String { s + salt }

// main.swift
print(hashed("pw"))                  // in Ordnung: hashed ist internal
// print(salt)                       // Fehler: salt ist fileprivate
challenge icon

Aufgabe

Einfach

Das Programm besteht aus zwei Dateien. main.swift liest einen Namen ein und gibt das Ergebnis von greeting(for:) aus. Vervollständige greeting(for:) in Greeting.swift, sodass es für den Namen Ada Hello, Ada! zurückgibt oder Hello, friend!, wenn der Name leer ist.

Dein Code gehört in Greeting.swift. main.swift enthält den vorgegebenen Eingabe-/Ausgabecode und kann nicht bearbeitet werden.

Probier es selbst

// Vorgegebener Eingabe-/Ausgabecode: unverändert lassen
var input: [String] = []
while let line = readLine() { input.append(line) }
for name in input { print(greeting(for: name)) }
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Swift-Playground