如何将属性 getter 传递给接受函数类型的函数?
这是我想要实现的示例:
class Test {
val test: String
get() = "lol"
fun testFun(func: ()->String) {
// invoke it here
}
fun callTest() {
testFun(test::get)
// error: Type mismatch: inferred type is
// KFunction1<@ParameterName Int, Char> but () -> String was expected
}
}
有办法吗?
最佳答案
您可以通过编写::test
(或this::test
)来引用getter。
当您编写test::get
时,您实际上是在引用String
上的get
方法。该方法接受一个索引并返回该索引处的字符。
如果该属性是一个 var
并且您想要引用它的 setter,您可以编写 ::test::set
。
有关属性引用的更多信息,请参见此处:https://kotlinlang.org/docs/reference/reflection.html#bound-function-and-property-references-since-11
关于properties - 如何将属性 getter 作为函数类型传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51840809/