在以下工作代码中删除 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 中的两个版本:
最佳答案
此行为是设计使然。查看 documentation :
关于Kotlin:可见性修饰符更改匿名对象的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52892467/