kirillrakhman
08/11/2016, 11:50 AMclass ClassWithCallback {
fun foo(callback: (String) -> Unit) {
callback("hello")
}
fun bar(callback: (Int) -> Unit) {
callback(1)
}
}
fun main(args: Array<String>) {
withCallbacks {
val cwc = ClassWithCallback()
println(transformCallback(cwc::foo))
println(transformCallback(cwc::bar))
}
}
fun withCallbacks(coroutine c: CallbackController.() -> Continuation<Unit>) {
CallbackController().c().resume(Unit)
}
class CallbackController {
suspend fun <T> transformCallback(kFunction1: ((T) -> Unit) -> Any, c: Continuation<T>) {
kFunction1 { c.resume(it) }
}
}