break, continue dan Pemulangan Berlabel
Kawal aliran gelung dengan break/continue dan keluar daripada gelung bersarang menggunakan label.
break, continue dan Pemulangan Berlabel ialah pelajaran Kotlin Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kotlin Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kotlin Academy merangkumi sejumlah 4 pelajaran.
Kawalan Aliran Gelung
Kotlin menyokong break (keluar daripada gelung), continue (melangkau ke lelaran seterusnya) dan label untuk keluar daripada gelung bersarang.
Asas break
break keluar serta-merta daripada gelung paling dalam yang mengandungi arahan tersebut.
fun main() {
for (i in 1..10) {
if (i == 5) break
print("$i ")
}
println() // 1 2 3 4
}Asas continue
continue melangkau baki lelaran semasa dan bergerak ke lelaran seterusnya.
fun main() {
for (i in 1..10) {
if (i % 2 == 0) continue
print("$i ")
}
println() // 1 3 5 7 9
}Gelung Berlabel
Berikan label pada gelung dengan label@ dan rujuknya daripada break@label atau continue@label untuk mengawal gelung luar dari dalam gelung bersarang.
fun main() {
outer@ for (i in 1..3) {
for (j in 1..3) {
if (i == 2 && j == 2) break@outer
println("$i,$j")
}
}
}continue dengan Label
Gunakan continue@outer untuk melangkau ke lelaran seterusnya bagi gelung luar.
fun main() {
outer@ for (i in 1..3) {
for (j in 1..3) {
if (j == 2) continue@outer
println("i=$i j=$j")
}
}
}return@lambda
Di dalam forEach dan fungsi sebaris yang lain, return biasa akan keluar daripada fungsi yang mengandungi lambda. Gunakan return@forEach untuk keluar daripada lambda sahaja.
fun main() {
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@forEach
println(it)
}
println("Done")
}return Bukan Tempatan dalam Lambda
Jika lambda adalah sebaris (seperti forEach), return biasa akan keluar daripada keseluruhan fungsi yang mengandungi lambda — kadangkala mengejutkan.
fun process() {
listOf(1, 2, 3).forEach {
if (it == 2) return // exits process()
println(it)
}
println("never printed")
}
fun main() { process() }Label Tersuai pada Lambda
Anda boleh melabelkan lambda secara jelas dengan name@ untuk menentukan sasaran return dengan lebih terang.
fun main() {
listOf(1, 2, 3, 4).forEach loop@{
if (it == 3) return@loop
println(it)
}
}break dalam while
break dan continue berfungsi dengan cara yang sama dalam while dan do-while.
fun main() {
var i = 0
while (true) {
if (i >= 3) break
println("i = $i")
i++
}
}Menggabungkan Label dan Continue
Label dan continue membolehkan anda melangkau keseluruhan lelaran algoritma bersarang tanpa pemboleh ubah penanda.
fun main() {
val grid = listOf(listOf(1,2,0), listOf(3,4,5), listOf(0,6,7))
rows@ for (row in grid) {
for (cell in row) {
if (cell == 0) continue@rows
print("$cell ")
}
println()
}
}Bila Tidak Patut Menggunakan Label
Label menambahkan kerumitan. Jika anda sering menggunakannya, pertimbangkan untuk mengekstrak gelung dalaman ke dalam fungsi dengan return biasa.
fun firstMatch(grid: List<List<Int>>, target: Int): Pair<Int,Int>? {
for (r in grid.indices) for (c in grid[r].indices) {
if (grid[r][c] == target) return r to c
}
return null
}
fun main() {
val g = listOf(listOf(1,2),listOf(3,4))
println(firstMatch(g, 3))
}Semakan Pantas
Bagaimanakah anda keluar daripada gelung luar dari dalam gelung dalam di Kotlin?
Imbas Kembali
break keluar daripada gelung paling dalam; continue melangkau ke lelaran seterusnya. Gunakan label@ + break@label/continue@label untuk kawalan bersarang. Dalam lambda, utamakan return@forEach berbanding return untuk mengelakkan keluar bukan tempatan.
Pelajari Kotlin dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “break, continue dan Pemulangan Berlabel” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kotlin Academy, termasuk “break, continue dan Pemulangan Berlabel”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kotlin Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “break, continue dan Pemulangan Berlabel”?
Kawal aliran gelung dengan break/continue dan keluar daripada gelung bersarang menggunakan label. Anda berlatih Kotlin Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kotlin Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kotlin Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “break, continue dan Pemulangan Berlabel” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kotlin Academy ini?
Ya. Setiap pelajaran Kotlin Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Gelung for Merentasi Julat dan Koleksi
- while dan do-while: Bila Hendak Menggunakan Setiap Satu
- forEach, repeat dan forEachIndexed
- break, continue dan Pemulangan Berlabel