Generics
Generic Functions
Write one function that works with different value types.
generic-function
A generic function declares a type parameter before its name.
Generic Functions
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")
}
count ← 3
5fun main() {6 val count→ 3 = 3 //@count=1, 57 val label = describeValue(count3)fun <T> describeValue(value: T): String
1fun <T> describeValue(value3: T): String {2 return "value:$value3"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
count ← 1
5fun main() {6 val count→ 1 = 17 val label = describeValue(count1)fun <T> describeValue(value: T): String
1fun <T> describeValue(value1: T): String {2 return "value:$value1"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
count ← 5
5fun main() {6 val count→ 5 = 57 val label = describeValue(count5)fun <T> describeValue(value: T): String
1fun <T> describeValue(value5: T): String {2 return "value:$value5"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