[英]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.