Kotlin setOnclickListener

Aud*_*udi 6 android kotlin

回到java我以前只写return一个void方法...但kotlin似乎不允许只返回,而是使用return@methodname?有人可以解释这是什么以及它如何增加价值?

 bAddLine.setOnClickListener {
            val selectedSeries = getSelectedSeries()
            if (selectedSeries.isEmpty()) {
                Toast.makeText(this, getString(R.string.toast_channel_mandatory), Toast.LENGTH_LONG).show()
                return@setOnClickListener
            }
        }
Run Code Online (Sandbox Code Playgroud)

Ale*_*xTa 9

来自kotlinlang网站:

返回标签

使用函数文字,局部函数和对象表达式,函数可以嵌套在Kotlin中.合格的回报允许我们从外部函数返回.最重要的用例是从lambda表达式返回.回想一下,当我们写这篇文章时:

fun foo() {
    ints.forEach {
        if (it == 0) return  // nonlocal return from inside lambda directly to the caller of foo()
        print(it)
    }
}
Run Code Online (Sandbox Code Playgroud)

return从最近的封闭功能-expression的回报,即富.(请注意,仅对传递给内联函数的lambda表达式支持此类非本地返回.)如果我们需要从lambda表达式返回,我们必须标记它并限定return:

fun foo() {
    ints.forEach lit@ {
        if (it == 0) return@lit
        print(it)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,它仅从lambda表达式返回.通常使用implicits标签更方便:这样的标签与lambda传递的函数具有相同的名称.

fun foo() {
    ints.forEach {
        if (it == 0) return@forEach
        print(it)
    }
}
Run Code Online (Sandbox Code Playgroud)