properties - 如何将属性 getter 作为函数类型传递给另一个函数

标签 properties kotlin getter

如何将属性 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/

相关文章:

android - 如何在 Android Kotlin 中使用 Spring 动画(而不是普通动画)对圆形进度条进行动画处理

gradle - 如何在 Gradle Kotlin DSL 中使用来自 gradle.properties 的插件版本?

Go Getter 方法与字段,正确命名

java - getX() 在我的所有类(class)中都有效,除了这个

javascript - 巩固 JavaScript 对象、方法和属性的知识

datetime - powershell get-itemproperty获得公正的值(value)

c# - 自定义 C# 对象是否可以包含与其自身类型相同的属性?

properties - 在哪里包含 jaxb.properties 文件?

android - 无法使用 MediaBrowserServiceCompat

ios - Swift 3 setter/getter 方法