Kotlin高阶函数提示暂不支持变量引用的替代实现方案咨询
报错原因
你遇到的References to variables aren't supported yet报错是语法使用错误导致:Kotlin 不支持::实例.方法的写法,若要获取绑定到具体实例的成员函数引用,双冒号需要放在实例名和方法名之间。
可行替代方案
- 方案1:使用正确的实例绑定函数引用语法
直接修改报错行的写法即可,和你原本的实现逻辑完全一致:
val some = Something(some1::square)
- 方案2:使用Lambda表达式封装调用
如果后续有更复杂的参数处理逻辑,也可以用Lambda实现,灵活性更高:
val some = Something { some1.square(it) }
完整可运行代码
class Something(val foo: (x: Int) -> Int){ fun xyz(a: Int){ print("result: ${foo(a)}") } } fun main() { val some1 = Something1() // 以下两种写法二选一即可 val some = Something(some1::square) // val some = Something { some1.square(it) } some.xyz(10) // 运行输出:result: 100 } class Something1{ fun square(x: Int) = x*x }
内容的提问来源于stack exchange,提问作者sadat
相关产品推荐
相关产品推荐

