Kotlin có các hàm lặp rất hay, như forEach
hoặc repeat
, nhưng tôi không thể làm cho các toán tử break
và continue
hoạt động với chúng (cả cục bộ và không cục bộ):
repeat(5) {
break
}
(1..5).forEach {
continue@forEach
}
Mục đích là để bắt chước các vòng lặp thông thường với cú pháp hàm càng giống càng tốt. Nó chắc chắn có thể xảy ra trong một số phiên bản cũ hơn của Kotlin, nhưng tôi phải vật lộn để tái tạo cú pháp.
Vấn đề có thể là một lỗi với nhãn (M12), nhưng tôi nghĩ rằng ví dụ đầu tiên vẫn hoạt động.
Đối với tôi, dường như tôi đã đọc ở đâu đó về một thủ thuật / chú thích đặc biệt, nhưng tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào về chủ đề này. Có thể trông giống như sau:
public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
for (index in 0..times - 1) {
body(index)
}
}
break
và continue
đối với các vòng lặp chức năng, hoặc nếu bạn đang tìm kiếm các câu trả lời thay thế làm chính xác điều tương tự. Cái trước dường như đúng như vậy, bởi vì bạn đã từ chối cái sau.
continue@label
vàbreak@label
tính năng), xem câu hỏi liên quan: stackoverflow.com/questions/34642868/...