Write one function that works with different value types.

generic-function A generic function declares a type parameter before its name.

Generic Functions

count
GenericFunctions.kt
Replay: real traced execution (multi-file project)
fun <T> describeValue(value: T): String {
    return "value:$value"
}

fun main() {
    val count = 3
    val label = describeValue(count)

    println("count=$count")
    println("label=$label")
}
fun <T> describeValue(value: T): String {
    return "value:$value"
}

fun main() {
    val count = 1
    val label = describeValue(count)

    println("count=$count")
    println("label=$label")
}
fun <T> describeValue(value: T): String {
    return "value:$value"
}

fun main() {
    val count = 5
    val label = describeValue(count)

    println("count=$count")
    println("label=$label")
}
  1. count ← 3

    5fun main() {6    val count→ 3 = 3 //@count=1, 57    val label = describeValue(count3)
  2. fun <T> describeValue(value: T): String

    1fun <T> describeValue(value3: T): String {2    return "value:$value3"3}
  3. label ← value:3

    6    val count = 3 //@count=1, 57    val label→ value:3 = describeValue(count3)89    println("count=$count3")10    println("label=$labelvalue:3")11}
    outputcount=3
    label=value:3
  1. count ← 1

    5fun main() {6    val count→ 1 = 17    val label = describeValue(count1)
  2. fun <T> describeValue(value: T): String

    1fun <T> describeValue(value1: T): String {2    return "value:$value1"3}
  3. label ← value:1

    6    val count = 17    val label→ value:1 = describeValue(count1)89    println("count=$count1")10    println("label=$labelvalue:1")11}
    outputcount=1
    label=value:1
  1. count ← 5

    5fun main() {6    val count→ 5 = 57    val label = describeValue(count5)
  2. fun <T> describeValue(value: T): String

    1fun <T> describeValue(value5: T): String {2    return "value:$value5"3}
  3. label ← value:5

    6    val count = 57    val label→ value:5 = describeValue(count5)89    println("count=$count5")10    println("label=$labelvalue:5")11}
    outputcount=5
    label=value:5