Lavorare con i file
Fa parte della sezione Programmazione orientata agli oggetti del percorso Kotlin di Coddy. Lezione 1 di 57.
I programmi reali sono suddivisi in più file. Tutti i file .kt di un programma Kotlin vengono compilati insieme, quindi una funzione o una classe dichiarata in un file può essere usata in qualsiasi altro file dello stesso pacchetto senza un import:
// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// Main.kt
fun main() {
println(greeting("Ada"))
}Eseguendo questo programma viene stampato Hello, Ada!: main in Main.kt chiama la funzione che si trova in Greeting.kt.
Un file Kotlin contiene solo dichiarazioni: classi, funzioni, proprietà. Le istruzioni come println(...) devono trovarsi all'interno di una funzione. Il programma inizia da fun main(), che per convenzione si trova in Main.kt:
// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi") // errore: le istruzioni devono trovarsi all'interno di una funzione
// Main.kt
fun main() {
val name = readLine() ?: "friend"
println(greeting(name))
}La disposizione abituale prevede una classe per file, con il nome della classe: Dog.kt contiene Dog, Account.kt contiene Account. Nelle sfide di questa sezione, il tuo codice va inserito in quei file e Main.kt contiene il codice fornito per l'input e l'output, che di solito non puoi modificare. L'editor mostra ogni file in una scheda.
Dog.kt // class Dog(...) { ... }
Account.kt // class Account { ... }
Main.kt // fun main(): legge l'input e stampa i risultatiLa visibilità riguarda anche i file. Una dichiarazione al livello superiore contrassegnata come private è visibile solo all'interno del proprio file, mentre il modificatore predefinito, public, la rende visibile in ogni file:
// Secret.kt
private const val SALT = "x7" // solo questo file può accedervi
fun hashed(s: String) = s + SALT
// Main.kt
fun main() {
println(hashed("pw")) // va bene: hashed è pubblica
// println(SALT) // errore: SALT è privata in Secret.kt
}Sfida
FacileIl programma ha due file. main in Main.kt legge i nomi e stampa il risultato di greeting(name). Completa greeting in Greeting.kt in modo che restituisca Hello, Ada! per il nome Ada, oppure Hello, friend! quando il nome è vuoto.
Il tuo codice va in Greeting.kt. Main.kt contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
fun main() {
// Supplied input/output code: keep it as it is
val input = generateSequence(::readLine).toList()
for (name in input) println(greeting(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 classiCostruttori primariBlocchi init e convalidaCostruttori secondariRiepilogo - Tessera della biblioteca4Ereditarietà
Classi aperte e sottoclassiRidefinizione dei membrisuper e costruttoriClassi astratteRiepilogo - Elenco del personale2Proprietà e incapsulamento
Accessor personalizzatiModificatori di visibilitàSetter privatilazy e lateinitRipasso - Conto bancario5Interfacce
Dichiarare le interfacceMetodi predefinitiInterfacce multipleLe interfacce come tipiRiepilogo - Metodi di pagamento8Tipi generici
Funzioni genericheClassi genericheVincoli sui tipiVarianza con in e outRiepilogo - Coda con priorità11Progetto: Gestione della biblioteca
Libri e sociPrendere in prestito i libriEsercitati da solo: Playground Kotlin