Ce face fun main()
Orice program Kotlin pornește din funcția main. Ea se scrie direct în fișier, la nivelul de sus, fără să fie pusă într-o clasă (cum cere Java). Când rulezi programul, Kotlin execută instrucțiunile din main de sus în jos, iar programul se termină când main se termină.
Din Kotlin 1.3, main poate fi scrisă fără parametri: fun main(). Dacă ai nevoie de argumentele din linia de comandă (de exemplu java -jar program.jar Ana 10), folosești forma fun main(args: Array<String>): args[0] este primul argument.
Celelalte funcții ale programului pot fi scrise înainte sau după main; ordinea în fișier nu contează. Pe JVM, compilatorul pune funcțiile de nivel de sus din main.kt într-o clasă numită MainKt, pe care o pornește Java.
Parametri
| Parametru | Descriere |
|---|---|
args |
Opțional. Un Array<String> cu argumentele primite din linia de comandă. Este gol dacă programul pornește fără argumente. |
Ce returnează
Nimic (Unit). Codul de ieșire al programului este 0, dacă nu apare o excepție neprinsă.
Exemple
Exemplul 1: Cel mai mic program
println afișează un rând. Instrucțiunile se execută în ordine, de sus în jos.
fun main() {
println("Bună, Ana!")
val produse = 3
val pret = 12.5
println("Ai cumpărat $produse caiete, total ${produse * pret} lei")
}
Rezultat
Bună, Ana!
Ai cumpărat 3 caiete, total 37.5 lei
Exemplul 2: Argumente din linia de comandă
Exemplul rulează fără argumente, deci args este gol și se folosește numele implicit. Cu java -jar program.jar Mihai ar afișa „Salut, Mihai!”.
fun main(args: Array<String>) {
println("Am primit ${args.size} argumente")
val nume = args.firstOrNull() ?: "Ana"
println("Salut, $nume!")
}
Rezultat
Am primit 0 argumente
Salut, Ana!
Exemplul 3: Funcții scrise după main
main apelează funcții definite mai jos în fișier. Kotlin nu cere ca o funcție să fie declarată înainte de a fi folosită.
fun main() {
val note = listOf(9, 7, 10, 8)
println("Media: ${medie(note)}")
println(mesaj(medie(note)))
}
fun mesaj(m: Double): String = if (m >= 8.5) "Felicitări!" else "Mai exersează."
fun medie(note: List<Int>): Double = note.sum().toDouble() / note.size
Rezultat
Media: 8.5
Felicitări!
Greșeli frecvente
- Scrierea lui
mainîntr-o clasă, ca în Java: în Kotlinmainstă la nivelul de sus al fișierului. Dacă o pui într-o clasă, programul nu mai are punct de pornire (eroareno main manifest attributesauCould not find or load main class). fun Main()cu literă mare: numele trebuie să fie exactmain.- Citirea lui
args[0]fără verificare: dacă programul pornește fără argumente, apareArrayIndexOutOfBoundsException. Foloseșteargs.firstOrNull()sauargs.getOrNull(0).
Comenzi înrudite
fun: fun declară o funcție: un bloc de cod cu nume, care primește parametri și poate returna un rezultat.kotlinc: Compilatorul Kotlin din linia de comandă: transformă fișierele .kt într-un program care rulează pe JVM.package și import: package stabilește numele pachetului unui fișier; import aduce în fișier clase și funcții din alte pachete.val și var: val declară o variabilă care nu mai poate fi schimbată după atribuire; var declară una care poate primi altă valoare.