Учитывая простой класс:
data class Optional<T>(val value: T?)
Я могу определить generi c функцию и значение расширения следующим образом:
fun <T> T?.makeOptional() = Optional(this) // Compiles ✅
val <T> T?.optional get() = Optional(this) // Compiles ✅
Я также могу определить global generi c функции:
fun <T> makeOptionalNull() : Optional<T> = Optional(null) // Compiles ✅
Однако я не могу определить эквивалентное global generi c значение для этой последней функции:
val <T> optionalNull : Optional<T> = Optional(null) // Compilation Error ❌
// ^ Type parameter of a property must be used in its receiver type
A global non-generi c значение вполне подходит, хотя:
val stringNull : Optional<String> = Optional(null) // Compiles ✅
Как создать глобальное значение generi c, аналогичное над? Это вообще возможно?