Does anyone have an idea why this is not working? ...
# announcements
e
Does anyone have an idea why this is not working?
Copy code
inline fun <T, R> using(input: T, f: (T) -> R): R = f(input)

fun main(args: Array<String>) {
    
    val input: Any? = null
    
    val f: (Any?) -> String = { 
        when (it) {
            is String -> it
            else -> throw RuntimeException()
        }
    }

    // works
    val test1: String = using(input, f)

    // Error:(18, 24) Type inference failed. Expected type mismatch: inferred type is kotlin.Any? but kotlin.String was expected
    val test2: String = using(input) { 
        when (it) {
            is String -> it
            else -> throw RuntimeException()
        }
    } 
}