Kotlin มีฟังก์ชั่นการทำซ้ำที่ดีมากเช่นforEach
หรือrepeat
แต่ฉันไม่สามารถทำให้ตัวดำเนินการbreak
และcontinue
ตัวดำเนินการทำงานร่วมกับพวกเขาได้ (ทั้งในและนอกพื้นที่):
repeat(5) {
break
}
(1..5).forEach {
continue@forEach
}
เป้าหมายคือการเลียนแบบลูปตามปกติโดยมีไวยากรณ์การทำงานใกล้เคียงที่สุด เป็นไปได้แน่นอนใน Kotlin เวอร์ชันเก่า ๆ บางรุ่น แต่ฉันพยายามสร้างไวยากรณ์ขึ้นมาใหม่
ปัญหาอาจเป็นข้อบกพร่องเกี่ยวกับป้ายกำกับ (M12) แต่ฉันคิดว่าตัวอย่างแรกควรใช้งานได้อยู่ดี
สำหรับฉันแล้วดูเหมือนว่าฉันเคยอ่านเคล็ดลับ / คำอธิบายประกอบพิเศษที่ไหนสักแห่ง แต่ฉันไม่พบข้อมูลอ้างอิงใด ๆ ในเรื่องนี้ อาจมีลักษณะดังต่อไปนี้:
public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
for (index in 0..times - 1) {
body(index)
}
}
break
และcontinue
สำหรับลูปการทำงานหรือถ้าคุณกำลังมองหาคำตอบทางเลือกที่จะทำสิ่งเดียวกัน อดีตดูเหมือนจะเป็นเช่นนั้นเพราะคุณปฏิเสธอย่างหลัง
continue@label
และbreak@label
คุณสมบัติ) โปรดดูคำถามที่เกี่ยวข้อง: stackoverflow.com/questions/34642868/…