簡體   English   中英

Kotlin:可見性修飾符更改匿名對象的類型

[英]Kotlin: Visibility modifier changes type of anonymous object

在以下工作代碼中刪除myScopeprivate修飾符(第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()
    }
}

這里是Android Studio中的兩個版本: 在此輸入圖像描述

此行為是設計使然。 查看文檔

請注意,匿名對象只能在本地和私有聲明中用作類型。 如果使用匿名對象作為公共函數的返回類型或公共屬性的類型,則該函數或屬性的實際類型將是匿名對象的聲明超類型,如果未聲明任何超類型,則為Any 。 匿名對象中添加的成員將無法訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM