簡體   English   中英

如何從Kotlin函數類型返回

[英]How to return from Kotlin function type

我正在使用函數類型來存儲要在按鈕單擊時調用的代碼。
如何從此函數類型返回
代碼如下:

var SearchClickEvent: ((searchString: String) -> Unit)? = null

inputDialog!!.SearchClickEvent = Search_Click  

private val Search_Click = { searchString: String ->
    if(searchString.isEmpty()){
        return//Error msg : return is not allowed here  
        //How to return from here
    }
}

注意:我將一段代碼存儲在一個不調用或寫入任何函數的變量中

你需要在lambda中創建一個帶有顯式return語句的標簽 ,例如:

//   label for lambda---v
val Search_Click = action@{ searchString: String ->
    if (searchString.isEmpty()) {
        return@action;
    }
    // do working
}

或者將if語句反轉如下:

val Search_Click = { searchString: String ->
    if (!searchString.isEmpty()) {
      // do working
    }
}

你也可以這樣做:

private val Search_Click =
    fun(searchString: String) {
        if (searchString.isEmpty()) return
        // more code
    }

Kotlin在行動:

如果在lambda中使用return關鍵字,它將從您調用lambda的函數返回,而不僅僅是從lambda本身返回。 這樣的return語句稱為非本地返回 ,因為它從比包含return語句的塊更大的塊return

規則很簡單: return使用fun關鍵字聲明的最近函數返回。 Lambda表達式不使用fun關鍵字,所以return的拉姆達從外部函數返回。

暫無
暫無

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

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