0Pricing
Swift Academy · Lezione

Controllo degli accessi (public/internal/fileprivate/private)

Controlli la visibilità delle API tra file e moduli usando public, internal (predefinito), fileprivate e private. Apprenda quando rendere un'API visibile o nasconderla.

Controllo degli accessi (public/internal/fileprivate/private) è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 3 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 3 lezioni in totale.

Panoramica dei livelli di accesso

Livelli di accesso di Swift:

  • public: visibile agli altri moduli
  • internal (predefinito): visibile nello stesso modulo
  • fileprivate: solo in questo file sorgente
  • private: nell'ambito che lo racchiude (tipo/estensione)

internal (predefinito)

Omettendo un modificatore, le dichiarazioni diventano internal e possono essere utilizzate ovunque all'interno dello stesso modulo (pacchetto o target dell'app).

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

Superficie dell'API public

Contrassegni le API come public per esporle agli altri moduli; mantenga gli helper come internal per ridurre la superficie esposta.

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))

Ambito fileprivate

fileprivate limita l'utilizzo allo stesso file sorgente. È utile per suddividere gli helper di un tipo all'interno di un unico file.

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

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

Ambito private

private limita l'accesso all'ambito che lo racchiude (tipo/estensione). Lo utilizzi per proteggere strettamente gli invarianti.

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

Suggerimenti di progettazione

Suggerimenti di progettazione:

  • Parta da internal come livello predefinito ed esponga come public solo ciò che serve ai consumatori.
  • Preferisca private/fileprivate per gli helper, così da mantenere ridotte le API.
  • Il livello di accesso di un membro non può essere più ampio di quello del suo tipo.

Accesso predefinito

Verifica rapida: qual è il livello di accesso predefinito?

Riepilogo

Riepilogo: utilizzi public per esporre i moduli, mantenga la maggior parte degli elementi come internal e nasconda i dettagli con fileprivate/private per proteggere gli invarianti.

Domande Frequenti

La lezione «Controllo degli accessi (public/internal/fileprivate/private)» è gratuita?

Sì — il testo completo di «Controllo degli accessi (public/internal/fileprivate/private)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 3 lezioni in totale.

Cosa imparerò in «Controllo degli accessi (public/internal/fileprivate/private)»?

Controlli la visibilità delle API tra file e moduli usando public, internal (predefinito), fileprivate e private. Apprenda quando rendere un'API visibile o nasconderla. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 3.

Quanto tempo richiede la lezione «Controllo degli accessi (public/internal/fileprivate/private)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Inizializzatore memberwise e metodi mutating
  2. Ereditarietà, overriding e final
  3. Controllo degli accessi (public/internal/fileprivate/private)
← Torna a Swift Academy