fun main() în Kotlin

Bazele programului Kotlin 1.0 (fără parametri: Kotlin 1.3)

Funcția main este punctul de pornire al oricărui program Kotlin: codul din ea se execută primul.

Sintaxă
fun main() {
    // codul programului
}

fun main(args: Array<String>) {
    // args = argumentele din linia de comandă
}

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 Kotlin main stă la nivelul de sus al fișierului. Dacă o pui într-o clasă, programul nu mai are punct de pornire (eroare no main manifest attribute sau Could not find or load main class).
  • fun Main() cu literă mare: numele trebuie să fie exact main.
  • Citirea lui args[0] fără verificare: dacă programul pornește fără argumente, apare ArrayIndexOutOfBoundsException. Folosește args.firstOrNull() sau args.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.