回到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)
来自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)
| 归档时间: |
|
| 查看次数: |
1595 次 |
| 最近记录: |