2017-10-20 95 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語句。