Ce face maxOf
maxOf(a, b) returnează valoarea mai mare, iar minOf(a, b) pe cea mai mică. Merg cu numere de orice tip, dar și cu orice valoare Comparable: texte (ordine alfabetică după codul caracterelor), date, obiecte proprii. Poți da și mai multe valori: maxOf(3, 9, 4).
Există și varianta cu un Comparator ca ultim argument: maxOf(a, b, compareBy { it.length }). Pentru o listă întreagă folosește lista.max(); extensia lista.maxOf { ... } calculează maximul unei valori pentru fiecare element.
Parametri
| Parametru | Descriere |
|---|---|
a, b, other |
Valorile comparate; trebuie să aibă același tip. |
Ce returnează
Valoarea maximă, respectiv minimă. La egalitate se returnează prima.
Exemple
Exemplul 1: Numere și texte
fun main() {
println(maxOf(7, 12))
println(minOf(7, 12))
println(maxOf(3, 9, 4, 8))
println(minOf(2.5, -1.0, 0.75))
println(maxOf("Ana", "Bogdan"))
println(minOf("mere", "banane", "pere"))
}
Rezultat
12
7
9
-1.0
Bogdan
banane
Exemplul 2: Limitarea unei reduceri
Reducerea este 15% din total, dar cel puțin 10 lei și cel mult 50 de lei.
fun reducere(total: Double): Double = minOf(maxOf(total * 0.15, 10.0), 50.0)
fun main() {
for (total in listOf(40.0, 200.0, 900.0)) {
println("Total $total lei -> reducere ${reducere(total)} lei")
}
}
Rezultat
Total 40.0 lei -> reducere 10.0 lei
Total 200.0 lei -> reducere 30.0 lei
Total 900.0 lei -> reducere 50.0 lei
Greșeli frecvente
- Amesteci tipuri:
maxOf(5, 2.5)nu compilează, pentru că Int și Double sunt tipuri diferite. ScriemaxOf(5.0, 2.5). - Folosești
maxOf(lista)pentru o listă. Funcția de nivel superior primește valori separate; pentru listă scrielista.max().
Comenzi înrudite
Int.coerceIn: Ține un număr între limite: coerceIn(0, 100) îl aduce în interval, coerceAtLeast/AtMost pun doar o limită.compareBy: Creează un Comparator care compară obiectele după una sau mai multe proprietăți, în ordine; se folosește cu sortedWith.Iterable.max: Găsește cel mai mare (max) sau cel mai mic (min) element; variantele OrNull întorc null pentru o colecție goală.