Menu
Coddy logo textTech

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 wyniki

Kontrola 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 fileprivate
challenge icon

Wyzwanie

Łatwy

Program 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)) }
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Edytor online Swift