Menu
Coddy logo textTech

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 einen 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 in Greeting.swift enthalten ist.

Nur eine Datei darf Anweisungen auf oberster Ebene enthalten, also Code, der außerhalb jeder Funktion oder jedes Typs eigenständig ausgeführt wird. Diese Datei ist main.swift; dort beginnt das Programm. Die anderen Dateien enthalten ausschließlich 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"   // Top-Level-Code ist in main.swift in Ordnung
print(greeting(for: name))

Das übliche Layout ist ein Typ pro Datei, benannt nach dem Typ: Dog.swift enthält Dog, Account.swift enthält Account. In den Aufgaben dieses Abschnitts kommt dein Code in diese Dateien, und main.swift enthält den bereitgestellten Eingabe-/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 es sehen
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 für den Namen Ada Hello, Ada! zurückgegeben wird oder Hello, friend!, wenn der Name leer ist.

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

Probier es selbst

// Gelieferter Ein-/Ausgabecode: belasse ihn wie er ist
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