Use two type parameters for a small pair of values.

pair A generic class can declare more than one type parameter.

Generic Pairs

count
GenericPairs.kt
Replay: real traced execution (multi-file project)
class PairBox<A, B>(val first: A, val second: B)

fun main() {
    val count = 2
    val pair = PairBox("left", count)
    val summary = "${pair.first}:${pair.second}"

    println("count=$count")
    println("summary=$summary")
}
class PairBox<A, B>(val first: A, val second: B)

fun main() {
    val count = 1
    val pair = PairBox("left", count)
    val summary = "${pair.first}:${pair.second}"

    println("count=$count")
    println("summary=$summary")
}
class PairBox<A, B>(val first: A, val second: B)

fun main() {
    val count = 4
    val pair = PairBox("left", count)
    val summary = "${pair.first}:${pair.second}"

    println("count=$count")
    println("summary=$summary")
}
  1. count ← 2, summary ← left:2

    3fun main() {4    val count→ 2 = 2 //@count=1, 45    val pair = PairBox("left", count2)6    val summary→ left:2 = "${pair.firstleft}:${pair.second2}"78    println("count=$count2")9    println("summary=$summaryleft:2")10}
    outputcount=2
    summary=left:2
  1. count ← 1, summary ← left:1

    3fun main() {4    val count→ 1 = 15    val pair = PairBox("left", count1)6    val summary→ left:1 = "${pair.firstleft}:${pair.second1}"78    println("count=$count1")9    println("summary=$summaryleft:1")10}
    outputcount=1
    summary=left:1
  1. count ← 4, summary ← left:4

    3fun main() {4    val count→ 4 = 45    val pair = PairBox("left", count4)6    val summary→ left:4 = "${pair.firstleft}:${pair.second4}"78    println("count=$count4")9    println("summary=$summaryleft:4")10}
    outputcount=4
    summary=left:4