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 ausDie 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 fileprivateAufgabe
EinfachDas 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)) }
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenMethoden und selfInitialisiererKlassen sind ReferenzenRückblick – Bibliotheksausweis4Kapselung
ZugriffskontrolleVon außen schreibgeschütztZustand schützenFehlschlagende InitialisiererRückblick – Bankkonto7Polymorphismus und Generika
PolymorphismusTypumwandlungGenerische FunktionenGenerische TypenZusammenfassung – Shape-Rechner2Strukturen und Werttypen
StrukturenWertsemantikVerändernde MethodenStruktur oder KlasseZusammenfassung – Inventarelement5Vererbung
UnterklassenMethoden überschreibenInitialisierer und superfinal und HierarchienRückblick – Mitarbeiterhierarchie8Standardprotokolle
CustomStringConvertibleEquatableComparableHashableRückblick – Benutzerdefiniertes Sortieren11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Swift-Playground