давно что-то тут никто ничего не спрашивал.
дано
interface MutableKeyValue<K, V>
fun <K, V> adapter(map: MutableMap<K, V?>): MutableKeyValue<K, V> = ...
fun <K, V> emptyKeyValue(): MutableKeyValue<K, V> = ...
почему
fun <K, V> of(key: K, value: V?): MutableKeyValue<K, V> =
value?.let { adapter(mutableMapOf(Pair(key, it))) } ?: emptyKeyValue()
не валидно, зато
fun <K, V> of(key: K, value: V?): MutableKeyValue<K, V> =
value.let { adapter(mutableMapOf(Pair(key, it))) }
вполне себе валидно?
это собсно к вопросу о выводе типов, дженериках и тому, как это всё работает в Kotlin