Kotlin memiliki fungsi iterasi yang sangat bagus, like forEachor repeat, tetapi saya tidak dapat membuat operator breakand continuebekerja dengannya (baik lokal maupun non-lokal):
repeat(5) {
break
}
(1..5).forEach {
continue@forEach
}
Tujuannya adalah untuk meniru loop biasa dengan sintaks fungsional sedekat mungkin. Itu pasti mungkin di beberapa versi lama Kotlin, tapi saya kesulitan untuk mereproduksi sintaksnya.
Masalahnya mungkin bug dengan label (M12), tetapi saya pikir contoh pertama harus berfungsi.
Sepertinya saya pernah membaca di suatu tempat tentang trik / anotasi khusus, tetapi saya tidak dapat menemukan referensi apa pun tentang subjek tersebut. Mungkin terlihat seperti berikut:
public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
for (index in 0..times - 1) {
body(index)
}
}
breakdan continueuntuk loop fungsional, atau jika Anda mencari jawaban alternatif yang melakukan hal yang persis sama. Yang pertama tampaknya menjadi masalah, karena Anda menolak yang terakhir.
continue@labeldanbreak@labelfitur), lihat pertanyaan terkait: stackoverflow.com/questions/34642868/…