如何从Kotlin函数types返回

我正在使用函数types来存储要在按钮单击时调用的代码。
如何从这个函数types返回
代码如下:

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 } } 

注意:我将一段代码存储在一个不调用或写入任何函数的variables中

你需要在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在行动:

如果在lambdaexpression式中使用return关键字,它将从您调用lambda的函数返回,而不仅仅是从lambda本身返回。 这样的return语句被称为非本地返回 ,因为它返回的块比包含return语句的块大。

规则很简单:返回从使用fun关键字声明的最近函数返回。 Lambdaexpression式不使用fun关键字,所以lambda中的返回从外部函数返回。