y
03/23/2023, 5:23 PMinterface MyInterface<R> {
    fun doIt(): R
}
object MyImpl : MyInterface<String> {
    override fun doIt(): String = "hello"
}
object MyOtherImpl : MyInterface<Int> {
    override fun doIt(): Int = 5
}fun <R> foo(impl: MyInterface<R>): R = impl.doIt()implfun <R> foo(impl: MyInterface<R> = MyImpl) = impl.doIt()fun foo() = foo(MyImpl)Paul Griffith
03/23/2023, 5:25 PMLoney Chou
03/23/2023, 5:27 PMMyImplStringMyInterface<R>RRStringimpl: MyInterface<R>MyImplLoney Chou
03/23/2023, 5:30 PMy
03/23/2023, 5:31 PMy
03/23/2023, 5:32 PMy
03/23/2023, 5:32 PM