Menu
Coddy logo textTech

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 risultati

Anche 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 è fileprivate
challenge icon

Sfida

Facile

Il 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)) }
quiz iconMettiti alla prova

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

Esercitati da solo: Playground Swift