Menu
Coddy logo textTech

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 risultati

La 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
}
challenge icon

Sfida

Facile

Il 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))
}
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 Kotlin