Kotlin中使用泛型类委托函数变量的问题求助
Kotlin中使用泛型类委托函数变量的问题求助
大家好,我最近在开发一个需要委托函数变量的应用,过程中遇到了卡壳的问题,折腾半天没理清头绪,想请教下各位大佬。先给大家贴一个最小可复现的代码示例:
package org.prismsus.tank import kotlin.reflect.KProperty fun addFunc(a : Int, b : Int) : Int { return a + b } class Test{ inner class PrintFuncCall1{ operator fun getValue(thisRef: Any?, property: KProperty<*>): (Int, Int) -> Int { fun temp(a : Int, b : Int) : Int { println("Function ${property.name}") return addFunc(a, b) } return ::temp } } val delegatedFun1 : (Int, Int) -> Int by PrintFuncCall1() inner class PrintFuncCall2<F : (Array<out Any>) -> R, R>{ operator fun getValue(thisRef : Any?, property : KProperty<*>) : (Array<out Any>) -> R{ fun temp(vararg params : Any) : R{ // 这里不知道怎么正确实现逻辑,想达到和PrintFuncCall1类似的效果 } return ::temp } } // 这里也不确定怎么正确声明委托的函数变量 }
我已经用非泛型的PrintFuncCall1实现了简单的函数委托,能打印被委托函数的名字并调用目标函数addFunc。但当我想做一个通用的泛型类PrintFuncCall2,来适配不同参数和返回值类型的函数时就懵了——不知道怎么在temp函数里正确处理参数、调用目标函数,也不确定对应的委托变量该怎么声明。有没有大佬能指点下这个泛型委托的正确实现方式呀?
备注:内容来源于stack exchange,提问作者ttzytt
相关产品推荐
相关产品推荐

