Menu
CoddyTech

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 z pozostałymi w jeden moduł, więc funkcji lub typu zadeklarowanego w jednym pliku można użyć w dowolnym 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 wykonywany samodzielnie poza jakąkolwiek funkcją lub typem. Jest nim main.swift i to 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))

Typowy układ zakłada jeden typ w każdym pliku, którego nazwa odpowiada nazwie typu: Dog.swift zawiera Dog, a Account.swift zawiera Account. W wyzwaniach w tej sekcji Twój kod trafia do tych plików, 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, a domyślny modyfikator 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 wypisuje wynik działania 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