首發(fā)于公眾號(hào): DSGtalk1989
4.循環(huán)控制
-
break和continue標(biāo)簽
我們?cè)趉otlin中弛作,通過
xxx@
的方式膛薛,即任意字符串加@
結(jié)尾的方式來定義循環(huán)標(biāo)簽,一般與for
循環(huán)結(jié)合起來用,比如:loop1@ for (i in 1..20) { println("i $i") loop2@ for (j in 1..10) { println("j $j") if (j > 5) { break@loop1 } loop3@ for (k in 1..5) { println("k $k") if (k > 2) { continue@loop2 } } } }
我們可以通過具體制定的條件來做
break
或者是continue
-
repeat
方法重復(fù)執(zhí)行幾次
repeat(5){ i -> println("循環(huán)運(yùn)行第${i+1}次炸裆。") } =======等同于 for(int i=0;i<5;i++)
-
-
標(biāo)簽返回
我們先來看一段如下的代碼
fun test() { var array = arrayListOf(1,2,3) array.forEach { if(it == 1){ return } } }
首先,
forEach
后面直接跟大括號(hào)是個(gè)lambda表達(dá)式鲜屏,如果直接在IDE中進(jìn)行編輯的話烹看,在lambda表達(dá)式中,如果直接輸入return
他會(huì)提示你需要直接return
還是return@forEach
實(shí)際上比較明顯了洛史,直接return
是跳出整個(gè)方法體惯殊,而return@forEach
只是跳出lambda表達(dá)式。同樣的也殖,我們可以直接在lambda的表達(dá)式大括號(hào)之前加上
xxx@
來自定義跳轉(zhuǎn)標(biāo)簽土思,或者直接不使用lambda,而在forEach
后直接添加方法等等,均會(huì)有不同的情況己儒。fun foo() { ints.forEach lit@ { if (it == 0) return@lit print(it) } } fun foo() { ints.forEach(fun(value: Int) { if (value == 0) return print(value) }) }
注意一下崎岂,
return@a 1
表示返回給a@這個(gè)lambda表達(dá)式1這個(gè)值。
Kotlin學(xué)習(xí)筆記之 1 基礎(chǔ)語法
Kotlin學(xué)習(xí)筆記之 2 基本數(shù)據(jù)類型
Kotlin學(xué)習(xí)筆記之 4 循環(huán)控制
Kotlin學(xué)習(xí)筆記之 5 類和對(duì)象
Kotlin學(xué)習(xí)筆記之 8 擴(kuò)展
Kotlin學(xué)習(xí)筆記之 9 數(shù)據(jù)類與密封類
Kotlin學(xué)習(xí)筆記之 12 對(duì)象表達(dá)式和對(duì)象聲明
Kotlin學(xué)習(xí)筆記之 13 基礎(chǔ)操作符run闪湾、with冲甘、let、also途样、apply
Kotlin學(xué)習(xí)筆記之 14 包與導(dǎo)入
Kotlin學(xué)習(xí)筆記之 15 伴生對(duì)象
Kotlin學(xué)習(xí)筆記之 18 函數(shù)
Kotlin學(xué)習(xí)筆記之 19 高階函數(shù)與 lambda 表達(dá)式
Kotlin學(xué)習(xí)筆記之 20 內(nèi)聯(lián)函數(shù)
Kotlin學(xué)習(xí)筆記之 21 解構(gòu)聲明
Kotlin學(xué)習(xí)筆記之 28 協(xié)程基礎(chǔ)
Kotlin學(xué)習(xí)筆記之 29 上下文與調(diào)度器
Kotlin學(xué)習(xí)筆記之 30 協(xié)程取消與超時(shí)
Kotlin學(xué)習(xí)筆記之 31 協(xié)程掛起函數(shù)的組合