在以下工作代码中删除 private(第 4 行)的 myScope 修饰符将破坏代码。原因是 myScope 的类型不断变化。是否将可见性设置为 private 类型为: anonymous object : Scope 。没有 private 类型将切换为 Scope 。我该如何解决这种行为?

interface Scope
operator fun<SD: Scope> SD.invoke(block: SD.() -> Unit) = block()

private val myScope = object : Scope {
    fun Int.myScopedExtFunction() = 1337
}

fun usage() {
    myScope {
        1.myScopedExtFunction()
    }
}

这是 Android Studio 中的两个版本:
Kotlin:可见性修饰符更改匿名对象的类型-LMLPHP

最佳答案

此行为是设计使然。查看 documentation :

关于Kotlin:可见性修饰符更改匿名对象的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52892467/

10-13 07:59
查看更多