Praca z plikami
Część sekcji Programowanie obiektowe ścieżki Swift w Coddy. Lekcja 1 z 57.
Prawdziwe programy są podzielone na kilka plików. W Swift każdy plik .swift aplikacji jest kompilowany razem w jeden moduł, więc funkcji lub typu zadeklarowanego w jednym pliku można używać w każdym innym pliku bez importowania:
// Greeting.swift
func greeting(for name: String) -> String {
"Hello, \(name)!"
}
// main.swift
print(greeting(for: "Ada"))Uruchomienie tego programu wypisuje Hello, Ada!: plik main.swift wywołuje funkcję znajdującą się w pliku Greeting.swift.
Tylko jeden plik może zawierać instrukcje najwyższego poziomu, czyli kod, który działa samodzielnie poza jakąkolwiek funkcją lub typem. Jest nim main.swift i to właśnie w nim rozpoczyna się program. Pozostałe pliki zawierają wyłącznie deklaracje:
// Greeting.swift
func greeting(for name: String) -> String { "Hello, \(name)!" }
// print("hi") // błąd: instrukcje nie są tutaj dozwolone na najwyższym poziomie
// main.swift
let name = readLine() ?? "friend" // Kod na najwyższym poziomie jest dozwolony w main.swift
print(greeting(for: name))Zazwyczaj w jednym pliku znajduje się jeden typ, a nazwa pliku odpowiada nazwie typu: Dog.swift zawiera Dog, a Account.swift zawiera Account. W wyzwaniach z tej sekcji umieszczasz swój kod w tych plikach, a main.swift zawiera dostarczony kod wejścia/wyjścia, którego zwykle nie możesz edytować. Edytor wyświetla każdy plik jako kartę.
Dog.swift // class Dog { ... }
Account.swift // struct Account { ... }
main.swift // odczytuje dane wejściowe i wypisuje wynikiKontrola dostępu dotyczy również plików. private i fileprivate ukrywają deklarację przed innymi plikami, natomiast domyślny poziom dostępu, internal, sprawia, że jest ona widoczna w każdym pliku modułu:
// Secret.swift
fileprivate let salt = "x7" // tylko ten plik ma do niego dostęp
func hashed(_ s: String) -> String { s + salt }
// main.swift
print(hashed("pw")) // w porządku: hashed ma poziom dostępu internal
// print(salt) // błąd: salt ma poziom dostępu fileprivateWyzwanie
ŁatwyProgram składa się z dwóch plików. main.swift odczytuje imię i wyświetla wynik greeting(for:). Uzupełnij greeting(for:) w pliku Greeting.swift, aby zwracała Hello, Ada! dla imienia Ada lub Hello, friend!, gdy imię jest puste.
Twój kod umieść w pliku Greeting.swift. main.swift zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
// Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
var input: [String] = []
while let line = readLine() { input.append(line) }
for name in input { print(greeting(for: name)) }
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Klasy i obiekty
Praca z plikamiDefiniowanie klasMetody i selfInicjalizatoryKlasy są referencjamiPowtórzenie — karta biblioteczna4Hermetyzacja
Kontrola dostępuTylko do odczytu z zewnątrzOchrona stanuInicjalizatory, które mogą zawieśćPodsumowanie — konto bankowe7Polimorfizm i typy generyczne
PolimorfizmRzutowanie typówFunkcje generyczneTypy generycznePodsumowanie – kalkulator kształtów2Struktury i typy wartościowe
StrukturySemantyka wartościMetody modyfikująceStruktura czy klasaPodsumowanie – element inwentarza5Dziedziczenie
PodklasyPrzesłanianie metodInicjalizatory i superfinal i hierarchiePodsumowanie — hierarchia pracowników8Standardowe protokoły
CustomStringConvertibleEquatableComparableHashablePodsumowanie — własne sortowanie11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książekPoćwicz samodzielnie: Edytor online Swift