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 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 es sehen
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 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)) }
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