[英]Kotlin: Visibility modifier changes type of anonymous object
在以下工作代碼中刪除myScope
的private
修飾符(第4行)將破壞代碼。 原因是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()
}
}
此行為是設計使然。 查看文檔 :
請注意,匿名對象只能在本地和私有聲明中用作類型。 如果使用匿名對象作為公共函數的返回類型或公共屬性的類型,則該函數或屬性的實際類型將是匿名對象的聲明超類型,如果未聲明任何超類型,則為Any 。 匿名對象中添加的成員將無法訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.