Triple în Kotlin

Un grup de trei valori, first, second și third, care se poate desface în trei variabile.

Sintaxă
data class Triple<out A, out B, out C>(val first: A, val second: B, val third: C)

Ce face Triple

Triple este ca Pair, dar cu trei valori: Triple("Ana", "Iași", 21). Le citești cu first, second, third sau le desfaci: val (nume, oras, varsta) = t.

Nu există o funcție scurtă ca to pentru Triple și nici clase pentru patru sau mai multe valori. Dacă ai nevoie de mai mult, scrie o data class; și pentru trei valori, o clasă cu nume clare este adesea mai bună.

Parametri

Parametru Descriere
first, second, third Cele trei valori.

Ce returnează

Un obiect Triple<A, B, C>.

Exemple

Exemplul 1: Trei valori împreună

fun main() {
    val student = Triple("Ana", "Iași", 21)
    println(student)
    println("${student.first} din ${student.second}, ${student.third} ani")

    val (nume, oras, varsta) = student
    println("$nume ($varsta) locuiește în $oras")
    println(student.toList())
}

Rezultat

(Ana, Iași, 21)
Ana din Iași, 21 ani
Ana (21) locuiește în Iași
[Ana, Iași, 21]

Exemplul 2: Statistici returnate dintr-o funcție

fun statistici(note: List<Int>): Triple<Int, Int, Double> =
    Triple(note.min(), note.max(), note.average())

fun main() {
    val (minim, maxim, media) = statistici(listOf(7, 10, 8, 9))
    println("Nota minimă: $minim")
    println("Nota maximă: $maxim")
    println("Media: $media")
}

Rezultat

Nota minimă: 7
Nota maximă: 10
Media: 8.5

Greșeli frecvente

  • Încerci Triple(1, 2, 3).fourth sau cauți o clasă cu patru valori. Nu există; folosește o data class.
  • Desfaci în ordinea greșită: val (oras, nume) = ... ia valorile după poziție, nu după nume. Numele variabilelor nu contează, doar ordinea.

Comenzi înrudite

  • Pair: O pereche de două valori, first și second; a to b este felul scurt de a crea un Pair, folosit în mapOf.