Swift Academy · Lekcja

Kontrola dostępu (public/internal/fileprivate/private)

Kontrolujcie widoczność API w plikach i modułach za pomocą public, internal (domyślne), fileprivate i private. Dowiedzcie się, kiedy ujawniać API, a kiedy je ukrywać.

Lekcja 3 z 38 kroki

Kontrola dostępu (public/internal/fileprivate/private) to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 3 lekcji w sumie.

Przegląd poziomów dostępu

Poziomy dostępu w Swift:

  • public: widoczny w innych modułach
  • internal (domyślny): widoczny w tym samym module
  • fileprivate: dostępny tylko w tym pliku źródłowym
  • private: dostępny w otaczającym zakresie (typie lub rozszerzeniu)

internal (default)

Pominięcie modyfikatora sprawia, że deklaracje są oznaczone jako internal i można ich używać w dowolnym miejscu tego samego modułu (pakietu lub celu aplikacji).

struct Greeter {            // internal by default
    func hello(_ name: String) -> String { "Hello, \\(name)" }
}
let g = Greeter()
print(g.hello("Ada"))

Publiczny interfejs API

Interfejsy API należy oznaczać jako public, aby udostępnić je innym modułom; elementy pomocnicze warto pozostawiać jako internal, aby ograniczyć publiczną powierzchnię API.

public struct Math {
    public static func add(_ a: Int, _ b: Int) -> Int { a + b }
    // internal helper remains hidden outside the module
    static func double(_ x: Int) -> Int { x * 2 }
}
print(Math.add(1,2))

Zakres fileprivate

fileprivate ogranicza użycie do tego samego pliku źródłowego. To dobre rozwiązanie do rozdzielania elementów pomocniczych typu znajdującego się w jednym pliku.

// In FileA.swift
fileprivate func hiddenInFile() { print("Only in this file") }

struct A {
    func call() { hiddenInFile() } // OK: same file
}
A().call()

Zakres private

private ogranicza dostęp do otaczającego zakresu (typu lub rozszerzenia). Należy używać go do ścisłej ochrony niezmienników.

struct Box {
    private var value = 0     // visible only inside Box declaration
    mutating func set(_ v: Int) { value = v } // controlled write
    func get() -> Int { value }                // controlled read
}
var b = Box()
b.set(7)
print(b.get())
// b.value = 3   // error: 'value' is private

Wskazówki projektowe

Wskazówki projektowe:

  • Domyślnie należy używać internal, a jako public udostępniać tylko to, czego potrzebują użytkownicy.
  • W przypadku elementów pomocniczych warto preferować private/fileprivate, aby ograniczyć rozmiar interfejsów API.
  • Poziom dostępu elementu nie może być szerszy niż poziom dostępu jego typu.

Domyślny poziom dostępu

Szybkie sprawdzenie: Jaki jest domyślny poziom dostępu?

Podsumowanie

Podsumowanie: Należy używać public, aby udostępniać elementy innym modułom, większość elementów pozostawiać jako internal, a szczegóły ukrywać za pomocą fileprivate/private w celu ochrony niezmienników.

Bezpłatny start

Ucz się Swift dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
122
Lekcje
409

Często zadawane pytania

Czy lekcja „Kontrola dostępu (public/internal/fileprivate/private)” jest bezpłatna?

Tak — pełny tekst „Kontrola dostępu (public/internal/fileprivate/private)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Kontrola dostępu (public/internal/fileprivate/private)”?

Kontrolujcie widoczność API w plikach i modułach za pomocą public, internal (domyślne), fileprivate i private. Dowiedzcie się, kiedy ujawniać API, a kiedy je ukrywać. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 3.

Ile czasu zajmuje lekcja „Kontrola dostępu (public/internal/fileprivate/private)”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Inicjalizator memberwise i metody mutating
  2. Dziedziczenie, overriding i final
  3. Kontrola dostępu (public/internal/fileprivate/private)
← Powrót do Swift Academy