break وcontinue وعمليات الإرجاع المسمّاة
تحكّم في تدفق الحلقات باستخدام break وcontinue، واخرج من الحلقات المتداخلة باستخدام التسميات.
break وcontinue وعمليات الإرجاع المسمّاة درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
التحكم في تدفق الحلقات
تدعم Kotlin كلاً من break (الخروج من الحلقة) وcontinue (الانتقال إلى التكرار التالي) والوسوم للخروج من الحلقات المتداخلة.
أساسيات break
يخرج break فورًا من الحلقة الأقرب المحيطة به.
fun main() {
for (i in 1..10) {
if (i == 5) break
print("$i ")
}
println() // 1 2 3 4
}أساسيات continue
يتخطى continue بقية التكرار الحالي وينتقل إلى التكرار التالي.
fun main() {
for (i in 1..10) {
if (i % 2 == 0) continue
print("$i ")
}
println() // 1 3 5 7 9
}الحلقات ذات الوسوم
وسّم حلقة باستخدام label@ وأشر إليها من خلال break@label أو continue@label للتحكم في الحلقات الخارجية من داخل الحلقات المتداخلة.
fun main() {
outer@ for (i in 1..3) {
for (j in 1..3) {
if (i == 2 && j == 2) break@outer
println("$i,$j")
}
}
}استخدام continue مع وسم
استخدم continue@outer للانتقال إلى التكرار التالي لحلقة خارجية.
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
داخل forEach والدوال المضمّنة الأخرى، يؤدي return العادي إلى الخروج من الدالة المحيطة. استخدم return@forEach للخروج من دالة lambda فقط.
fun main() {
listOf(1, 2, 3, 4, 5).forEach {
if (it == 3) return@forEach
println(it)
}
println("Done")
}return غير محلي في دوال lambda
إذا كانت دالة lambda مضمّنة (مثل forEach)، فإن return العادي يخرج من الدالة المحيطة بأكملها — وقد يكون ذلك مفاجئًا أحيانًا.
fun process() {
listOf(1, 2, 3).forEach {
if (it == 2) return // exits process()
println(it)
}
println("never printed")
}
fun main() { process() }وسم مخصص لدالة lambda
يمكنك وسم دالة lambda صراحةً باستخدام name@ لتحديد هدف الإرجاع بوضوح أكبر.
fun main() {
listOf(1, 2, 3, 4).forEach loop@{
if (it == 3) return@loop
println(it)
}
}break في while
يعمل كل من break وcontinue بالطريقة نفسها في while وdo-while.
fun main() {
var i = 0
while (true) {
if (i >= 3) break
println("i = $i")
i++
}
}الجمع بين الوسم وcontinue
تتيح لك الوسوم وcontinue تخطي تكرارات كاملة من الخوارزميات المتداخلة من دون استخدام متغيرات أعلام.
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()
}
}متى لا تستخدم الوسوم
تضيف الوسوم تعقيدًا إلى الشيفرة. إذا وجدت نفسك تلجأ إليها كثيرًا، ففكّر في استخراج الحلقة الداخلية إلى دالة تستخدم return عاديًا.
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))
}تحقق سريع
كيف تخرج من الحلقة الخارجية من داخل حلقة داخلية في Kotlin؟
مراجعة
يخرج break من الحلقة الأقرب، بينما يتخطى continue التكرار الحالي وينتقل إلى التالي. استخدم label@ مع break@label أو continue@label للتحكم في الحلقات المتداخلة. وفي دوال lambda، فضّل return@forEach على return لتجنب الخروج غير المحلي.
تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «break وcontinue وعمليات الإرجاع المسمّاة» مجاني؟
نعم — نص درس «break وcontinue وعمليات الإرجاع المسمّاة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «break وcontinue وعمليات الإرجاع المسمّاة»؟
تحكّم في تدفق الحلقات باستخدام break وcontinue، واخرج من الحلقات المتداخلة باستخدام التسميات. تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «break وcontinue وعمليات الإرجاع المسمّاة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حلقة for على النطاقات والمجموعات
- while وdo-while: متى تستخدم كلًّا منهما
- forEach وrepeat وforEachIndexed
- break وcontinue وعمليات الإرجاع المسمّاة