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ć.
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 privateWskazó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.
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
- Inicjalizator memberwise i metody mutating
- Dziedziczenie, overriding i final
- Kontrola dostępu (public/internal/fileprivate/private)