Lavorare con i file
Fa parte della sezione Programmazione orientata agli oggetti del percorso Swift di Coddy. Lezione 1 di 57.
I programmi reali sono suddivisi in diversi file. In Swift, ogni file .swift di un’app viene compilato insieme agli altri in un unico modulo, quindi una funzione o un tipo dichiarato in un file può essere usato in qualsiasi altro file senza un import:
// Greeting.swift
func greeting(for name: String) -> String {
"Hello, \(name)!"
}
// main.swift
print(greeting(for: "Ada"))L’esecuzione di questo programma stampa Hello, Ada!: main.swift chiama la funzione che si trova in Greeting.swift.
Solo un file può contenere istruzioni di primo livello, codice che viene eseguito autonomamente, al di fuori di qualsiasi funzione o tipo. Quel file è main.swift ed è lì che il programma ha inizio. Gli altri file contengono solo dichiarazioni:
// Greeting.swift
func greeting(for name: String) -> String { "Hello, \(name)!" }
// print("hi") // errore: le istruzioni non sono consentite al livello superiore qui
// main.swift
let name = readLine() ?? "friend" // il codice al livello superiore è consentito in main.swift
print(greeting(for: name))La disposizione abituale prevede un tipo per file, con il nome del tipo: Dog.swift contiene Dog, Account.swift contiene Account. Nelle sfide di questa sezione, il tuo codice va inserito in quei file e main.swift contiene il codice fornito per l'input/output, che di solito non puoi modificare. L'editor mostra ogni file come una scheda.
Dog.swift // class Dog { ... }
Account.swift // struct Account { ... }
main.swift // legge l'input e stampa i risultatiAnche l'accesso è regolato in base ai file. private e fileprivate nascondono una dichiarazione agli altri file, mentre il livello predefinito, internal, la rende visibile in tutti i file del modulo:
// Secret.swift
fileprivate let salt = "x7" // solo questo file può accedervi
func hashed(_ s: String) -> String { s + salt }
// main.swift
print(hashed("pw")) // va bene: hashed è internal
// print(salt) // errore: salt è fileprivateSfida
FacileIl programma ha due file. main.swift legge un nome e stampa il risultato di greeting(for:). Completa greeting(for:) in Greeting.swift in modo che restituisca Hello, Ada! per il nome Ada, oppure Hello, friend! quando il nome è vuoto.
Il tuo codice va in Greeting.swift. main.swift contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
// Código de entrada/salida proporcionado: mantenlo tal como está
var input: [String] = []
while let line = readLine() { input.append(line) }
for name in input { print(greeting(for: name)) }
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiMetodi e selfInizializzatoriLe classi sono riferimentiRiepilogo - Tessera della biblioteca4Incapsulamento
Controllo degli accessiSola lettura dall’esternoProteggere lo statoInizializzatori che possono fallireRiepilogo - Conto bancario7Polimorfismo e tipi generici
PolimorfismoCasting dei tipiFunzioni genericheTipi genericiRipasso - Calcolatore di forme2Struct e tipi valore
Le structSemantica dei valoriMetodi mutantiStruct o classeRiepilogo - Articolo di inventario5Ereditarietà
SottoclassiSovrascrivere i metodiInizializzatori e superfinal e gerarchieRiepilogo - Gerarchia dei dipendenti8Protocolli standard
CustomStringConvertibleEquatableComparableHashableRiepilogo - Ordinamento personalizzato11Progetto: Gestione della biblioteca
Libri e utentiPrestito dei libriEsercitati da solo: Playground Swift