Björn Mayer
11/17/2020, 10:12 AMfun interface PropHandler<P> {
fun P.handle(): Unit
}
kralli
11/17/2020, 10:15 AMfun interface PropHandler<P> {
fun P.handle()
}
fun <P> a(handler: PropHandler<P>) {}
fun main() {
a<String> { }
}
Björn Mayer
11/17/2020, 10:22 AMhandle
on a String?
fun <P> a(handler: PropHandler<P>) {
// invoke handler on object of type P
}
kralli
11/17/2020, 10:27 AMfun a(handler: PropHandler<String>) {
val string = "Hello World"
handler.invoke(string)
}
private fun <P> PropHandler<P>.invoke(value: P){
value.handle()
}
Arkadii Ivanov
11/17/2020, 10:28 AMBjörn Mayer
11/17/2020, 10:30 AMkralli
11/17/2020, 10:34 AMwith
. Thanks Arkadii for pointing that one out. If you want to know a bit more about the why, you can take a look at this thread https://kotlinlang.slack.com/archives/C0922A726/p1604502966429600?thread_ts=1604498090.426500&cid=C0922A726.