Kotlin memiliki fungsi iterasi yang sangat bagus, like forEach
or repeat
, tetapi saya tidak dapat membuat operator break
and continue
bekerja 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)
}
}
break
dan continue
untuk 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@label
danbreak@label
fitur), lihat pertanyaan terkait: stackoverflow.com/questions/34642868/…