在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Kotlin返回和跳轉(zhuǎn)
Kotlin內(nèi)聯(lián)函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(Eclipse)
Kotlin調(diào)用Java代碼
Kotlin使用Ant
Kotlin編譯器插件
Kotlin相等性
Kotlin JavaScript模塊
編寫Kotlin代碼文檔
Kotlin返回和跳轉(zhuǎn)
Kotlin異常處理
Kotlin可見性修飾符
Kotlin委托
Kotlin委托屬性
Kotlin編碼約定/編碼風(fēng)格
Kotlin基礎(chǔ)語(yǔ)法
使用Kotlin進(jìn)行服務(wù)器端開發(fā)
Kotlin接口
Kotlin反射
Kotlin類型別名
Kotlin枚舉類
Kotlin當(dāng)前版本是多少?
Kotlin注解處理工具
Kotlin類型的檢查與轉(zhuǎn)換
Kotlin屬性和字段
Kotlin類型安全的構(gòu)建器
Kotlin相比Java語(yǔ)言有哪些優(yōu)點(diǎn)?
Kotlin JavaScript反射
Kotlin 是什么?
Kotlin泛型
Kotlin慣用語(yǔ)法
Kotlin與OSGi
Kotlin數(shù)據(jù)類型
Kotlin是面向?qū)ο筮€是函數(shù)式語(yǔ)言?
Kotlin動(dòng)態(tài)類型
Kotlin協(xié)程
Kotlin操作符符重載
Kotlin使用Gradle
Kotlin密封類
Kotlin兼容性
Kotlin集合
Kotlin調(diào)用JavaScript
Kotlin null值安全
Kotlin函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(IntelliJ IDEA)
Kotlin嵌套類
Kotlin控制流程
Kotlin和Java語(yǔ)言比較
Kotlin 與 Java 語(yǔ)言兼容嗎?
Kotlin教程
Kotlin類和繼承
Kotlin對(duì)象表達(dá)式和對(duì)象聲明
JavaScript中調(diào)用Kotlin
Kotlin區(qū)間/范圍
Kotlin數(shù)據(jù)類
Kotlin lambda表達(dá)式
Kotlin是免費(fèi)的嗎?
Kotlin包
使用Kotlin進(jìn)行Android開發(fā)
在Java中調(diào)用Kotlin代碼
Kotlin this表達(dá)式
使用Kotlin進(jìn)行JavaScript開發(fā)
Kotlin擴(kuò)展
Kotlin解構(gòu)聲明
Kotlin注解
Kotlin使用Maven

Kotlin返回和跳轉(zhuǎn)

Kotlin有三個(gè)結(jié)構(gòu)跳轉(zhuǎn)表達(dá)式:

  • return - 默認(rèn)情況下,從最近的封閉函數(shù)或匿名函數(shù)返回。
  • break - 終止最近的閉合循環(huán)。
  • continue - 前進(jìn)到最近的封閉循環(huán)的下一個(gè)步驟(迭代)。

所有這些表達(dá)式都可以用作更大表達(dá)式的一部分:

val s = person.name ?: return

這些表達(dá)式的類型是Nothing類型。

Break 和 Continue 標(biāo)簽

Kotlin中的任何表達(dá)式都可以標(biāo)記一個(gè)標(biāo)簽。標(biāo)簽具有標(biāo)識(shí)符的形式,它的后面跟@符號(hào),例如:abc@,fooBar@是有效標(biāo)簽(請(qǐng)參閱語(yǔ)法)。 要使用標(biāo)注表達(dá)式,只是在其前面放上一個(gè)標(biāo)簽。

loop@ for (i in 1..100) {
    // ...
}

現(xiàn)在,可以標(biāo)記breakcontinue標(biāo)簽:

loop@ for (i in 1..100) {
    for (j in 1..100) {
        if (...) break@loop
    }
}

標(biāo)記 break 為標(biāo)記跳轉(zhuǎn)到執(zhí)行點(diǎn)后。標(biāo)記繼續(xù)進(jìn)行到該循環(huán)的下一次迭代。

在標(biāo)簽上返回

使用函數(shù)文字,局部函數(shù)和對(duì)象表達(dá)式,函數(shù)可以嵌套在Kotlin中。 修飾return允許從外部函數(shù)返回。 最重要的用例是從lambda表達(dá)式返回。如下代碼示例 -

fun foo() {
    ints.forEach {
        if (it == 0) return
        print(it)
    }
}

返回表達(dá)式從最近的包圍函數(shù)返回,即foo。 (請(qǐng)注意,這種非局部返回僅適用于傳遞給內(nèi)聯(lián)函數(shù)的lambda表達(dá)式),如果需要從lambda表達(dá)式返回,必須對(duì)它進(jìn)行標(biāo)注并限定返回值:

fun foo() {
    ints.forEach lit@ {
        if (it == 0) return@lit
        print(it)
    }
}

現(xiàn)在,它只從lambda表達(dá)式返回。通常使用隱性標(biāo)簽更為方便:這樣的標(biāo)簽與傳遞lambda的函數(shù)具有相同的名稱。

fun foo() {
    ints.forEach {
        if (it == 0) return@forEach
        print(it)
    }
}

或者,可以用匿名函數(shù)替換lambda表達(dá)式。異常函數(shù)中的返回語(yǔ)句將從匿名函數(shù)中返回。

fun foo() {
    ints.forEach(fun(value: Int) {
        if (value == 0) return
        print(value)
    })
}

當(dāng)返回值時(shí),解析器優(yōu)先考慮標(biāo)簽的返回值,即 -

return@a 1

表示“在標(biāo)簽@a處返回1”,而不是“返回標(biāo)記的表達(dá)式(@a 1)”。