2017-10-20 59 views
1

回到java我以前只写return为一个无效的方法...但kotlin似乎不允许只是返回,而是它使用[email protected]? 有人可以解释这是什么以及它如何增加价值?Kotlin setOnclickListener

bAddLine.setOnClickListener { 
      val selectedSeries = getSelectedSeries() 
      if (selectedSeries.isEmpty()) { 
       Toast.makeText(this, getString(R.string.toast_channel_mandatory), Toast.LENGTH_LONG).show() 
       [email protected] 
      } 
     } 

回答

5

kotlinlang网站:在标签

随着函数文本,本地函数

返回和对象表达,功能可以嵌套在科特林。合格的回报允许我们从外部函数返回。最重要的用例是从lambda表达式返回。回想一下,当我们写:

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

从最近的封闭功能,即富的return -expression回报。 (请注意,这种非本地回报率只为传递给内联函数lambda表达式的支持)。如果我们需要从一个lambda表达式返回,我们必须把它归类和限定return

fun foo() { 
    ints.forEach [email protected] { 
     if (it == 0) [email protected] 
     print(it) 
    } 
} 

现在,仅从lambda表达式返回。通常情况下,使用隐含标签更方便:这样的标签与lambda传递的函数具有相同的名称。

fun foo() { 
    ints.forEach { 
     if (it == 0) [email protected] 
     print(it) 
    } 
} 
2

当一个lambda里面,你必须指定要哪个范围return从,因为它可能是不明确的。请参阅关于returning at labels的官方文档。

在这种特定情况下,如果您要在不返回任何内容的函数结尾处返回,则可以完全省略return语句。