С учетом функции:
inline fun <T: Any> executeSomething(
defaultValue: String,
entity: T,
maybeDefault: String = defaultValue,
onSuccess: (T) -> Unit
)
Я хотел бы сделать вывод оSuccess, типе получателя T на основе параметров родительской функции или о чем-то подобном.
Это работает, компилятор выводит параметр получателя сущности в функции более высокого порядка onSucess как String:
val someEntity: String = "some text"
executeSomething("action", someEntity)
{entity -> print (entity)} //prints: "some text" - entity: String
Хотя я пытаюсь сделать так, чтобы функции старшего порядка определяли свой тип динамически, условно основываясь на значении параметра MaybeDefault, таким образом, применяя статический определенный тип.
Функция должна быть определена так:
fun <T: Any,V: Any> executeSomething(
defaultValue: String,
entity: T,
maybeDefault: String = defaultValue,
newReceiver: V = if (defaultValue == maybeDefault) newReceiver as T else newReceiver as Int,
onSuccess: (V) -> Unit
)
И тогда компилятор должен успешно определить тип staticDefineType:
val someNotDefault: String = "not default"
val someEntity: String = "some text"
executeSomething("default", someEntity, someNotDefault)
{newInferred -> print (newInferred)} //prints: 1 - newInferred: Int
возможно ли это в Котлине, какие альтернативы у меня есть?