Ce face if și else
if verifică o condiție de tip Boolean pusă între paranteze și execută blocul următor doar dacă ea este adevărată. else tratează cazul contrar, iar else if adaugă alte condiții, verificate pe rând de sus în jos. La o singură instrucțiune acoladele sunt opționale.
În Kotlin if este o expresie: are o valoare, pe care o poți pune într-o variabilă sau returna. val maxim = if (a > b) a else b. Din acest motiv Kotlin nu are operatorul ternar ?: din Java sau C. Când if e folosit ca expresie, ramura else este obligatorie.
Când blocurile au mai multe rânduri, valoarea blocului este ultima expresie din el. Pentru multe ramuri, when este de obicei mai clar decât un lanț lung de else if.
Parametri
| Parametru | Descriere |
|---|---|
conditie |
O expresie Boolean. Nu se acceptă numere sau texte. |
Ce returnează
Folosit ca expresie: valoarea ramurii executate (ultima expresie din bloc).
Exemple
Exemplul 1: Calificativul unei note
Se execută doar prima ramură a cărei condiție este adevărată.
fun main() {
for (nota in listOf(10, 8, 5, 3)) {
if (nota >= 9) {
println("$nota: foarte bine")
} else if (nota >= 7) {
println("$nota: bine")
} else if (nota >= 5) {
println("$nota: suficient")
} else {
println("$nota: insuficient")
}
}
}
Rezultat
10: foarte bine
8: bine
5: suficient
3: insuficient
Exemplul 2: if ca expresie (în loc de operatorul ternar)
Valoarea lui if se pune direct în variabilă sau în text.
fun main() {
val total = 230.0
val transport = if (total >= 200) 0.0 else 15.0
println("Comandă: $total lei, transport: $transport lei")
val stare = if (total + transport > 250) "comandă mare" else "comandă obișnuită"
println(stare)
}
Rezultat
Comandă: 230.0 lei, transport: 0.0 lei
comandă obișnuită
Exemplul 3: Blocuri cu mai multe rânduri
Valoarea fiecărei ramuri este ultima expresie din bloc; rândurile dinaintea ei se execută normal.
fun pretBilet(varsta: Int): Double {
val pret = if (varsta < 7) {
println(" copil sub 7 ani: gratuit")
0.0
} else if (varsta >= 65) {
println(" pensionar: reducere 50%")
20.0 * 0.5
} else {
20.0
}
return pret
}
fun main() {
println("Ana (5 ani): ${pretBilet(5)} lei")
println("Gheorghe (70 de ani): ${pretBilet(70)} lei")
println("Mihai (30 de ani): ${pretBilet(30)} lei")
}
Rezultat
copil sub 7 ani: gratuit
Ana (5 ani): 0.0 lei
pensionar: reducere 50%
Gheorghe (70 de ani): 10.0 lei
Mihai (30 de ani): 20.0 lei
Greșeli frecvente
val x = if (a > b) afărăelse: cândifeste expresie,elseeste obligatoriu (eroarea'if' must have both main and 'else' branches).- Căutarea operatorului
conditie ? a : b: nu există în Kotlin. Scrieif (conditie) a else b. - Lanțuri lungi de
else ifcare compară aceeași variabilă:wheneste mai scurt și mai clar.
Comenzi înrudite
when: Alege o ramură după valoarea unei expresii sau după prima condiție adevărată; înlocuiește switch din alte limbaje.true și false (Boolean): true și false sunt cele două valori ale tipului Boolean, folosite în condiții, comparații și operatori logici.return: Încheie funcția curentă și întoarce o valoare apelantului; cu etichetă (return@forEach) iese doar din lambda.