Ce face Pair
Pair ține împreună două valori, eventual de tipuri diferite: Pair("Ana", 9). Le citești cu first și second sau le desfaci dintr-odată: val (nume, nota) = pereche. Fiind o clasă data, are toString ((Ana, 9)), equals și copy.
Funcția to este infix, adică o scrii între cele două valori, fără punct și paranteze: "Ana" to 9 creează exact Pair("Ana", 9). De aceea un map se scrie mapOf("Iași" to 5, "Cluj" to 3): fiecare element este o pereche cheie–valoare.
Pair este practic pentru a returna două valori dintr-o funcție. Când valorile au o semnificație clară și sunt folosite în multe locuri, o data class cu nume potrivite este mai ușor de citit decât first și second.
Parametri
| Parametru | Descriere |
|---|---|
first, second |
Cele două valori ale perechii. |
Ce returnează
Un obiect Pair<A, B>.
Exemple
Exemplul 1: Crearea și desfacerea unei perechi
fun main() {
val p1 = Pair("Ana", 9)
val p2 = "Ion" to 7
println(p1)
println("${p2.first} are nota ${p2.second}")
val (nume, nota) = p1
println("$nume -> $nota")
println(p1 == ("Ana" to 9))
println(p2.copy(second = 10))
}
Rezultat
(Ana, 9)
Ion are nota 7
Ana -> 9
true
(Ion, 10)
Exemplul 2: O funcție care returnează două valori
Funcția întoarce minimul și maximul ca pereche, iar apelantul le desface direct în două variabile.
fun minMax(temperaturi: List<Int>): Pair<Int, Int> =
temperaturi.min() to temperaturi.max()
fun main() {
val (min, max) = minMax(listOf(12, -3, 8, 21, 5))
println("Minim: $min °C, maxim: $max °C")
val populatie = mapOf("Iași" to 271_692, "Cluj-Napoca" to 286_598)
for ((oras, locuitori) in populatie) {
println("$oras: $locuitori locuitori")
}
println(populatie.toList().first())
}
Rezultat
Minim: -3 °C, maxim: 21 °C
Iași: 271692 locuitori
Cluj-Napoca: 286598 locuitori
(Iași, 271692)
Greșeli frecvente
- Folosești Pair peste tot în loc de clase.
p.firstșip.secondnu spun nimic despre conținut; pentru date importante scrie odata class. - Scrii
mapOf("a", 1). mapOf primește perechi:mapOf("a" to 1).