Kotlin setOnclickListener
回到java中,我曾经写过只return
一个无效的方法…但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 } }
来自kotlinlang网站:
在标签处返回
通过函数文字,本地函数和对象表达,函数可以嵌套在Kotlin中。 合格的回报允许我们从外部函数返回。 最重要的用例是从lambda表达式返回。 回想一下,当我们写这个:
fun foo() { ints.forEach { if (it == 0) return // nonlocal return from inside lambda directly to the caller of foo() print(it) } }
return
-expression从最近的封闭函数(即foo)返回。 (请注意,只有传递给内联函数的lambda表达式才支持这种非本地返回。)如果我们需要从lambda表达式返回,则必须标记它并限定return
:
fun foo() { ints.forEach lit@ { if (it == 0) return@lit print(it) } }
现在,它只从lambda表达式返回。 通常情况下,使用隐含标签更为方便:这样的标签与lambda传递的函数具有相同的名称。
fun foo() { ints.forEach { if (it == 0) return@forEach print(it) } }
当在lambda中时,你必须指定你希望return
范围,因为它可能是不明确的。 查看有关退回标签的官方文档。
在这个特定的情况下,如果你要返回一个不返回任何东西的函数的末尾,你可以完全省略return
语句。