kotlin - 如何在Kotlin中从自身内部访问功能?

标签 kotlin lambda

在Java中,我可以写这样的东西

final Handler handler = new Handler();
handler.post(new Runnable() {
    @Override
    public void run() {
        handler.post(this);
    }
});

当我在Kotlin中编写类似的内容时,出现编译错误。 lambda表达式内的this不能正常运行。我能做什么?

val handler = Handler()
handler.post{
    handler.post(this) // this line throws a compilation error
}

最佳答案

val handler = Handler()

fun doAction() {
    handler.post(::doAction) // like `this`
}

handler.post(::doAction)

尽管从技术上讲Tim的解决方案也可行,但是他应该将其作为答案,因为这样比较容易。如果他这样做了,那就接受那个。

    val handler = Handler()

    handler.post(object : Runnable {
        override fun run() {
            handler.post(this)
        }
    })

关于kotlin - 如何在Kotlin中从自身内部访问功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57692195/

相关文章:

java - Kotlin:getFusedLocationProviderClient崩溃

C++ 将排列结果插入 vector

c# - C# 编译器和虚拟机中如何处理 lambda 表达式?

c# - 是否可以在单个语句中声明和使用匿名函数?

list - 在 kotlin 中使用哪个函数来复制列表

android - 如何在不使用 Gradle 复制 jar 的情况下将一个模块的源包含在另一个模块中?

Java 8 Lambdas flatmapping、groupingBy 和 mapping 以获取 T 和 List<K> 的 Map

c++ - 处理重构、模板 SFINAE 测试和 lambda

java - 我如何在 Micronaut/Kotest/Hibernate 测试中出现 "obtain transaction-synchronized Session for current thread"

kotlin - 在不可空字段中测试驱动的最佳方法