العبارات ذات التسميات
استهدف الحلقات الخارجية باستخدام تسميات مخصصة.
العبارات ذات التسميات درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
ما هي التسمية
تسمّي تسمية العبارة حلقةً ما، حتى تتمكنوا من استهدافها بدقة باستخدام break أو continue.
outer: for i in 1...3 {
print("row", i)
}صيغة التسمية
اكتبوا اسم التسمية متبوعًا بنقطتين رأسيتين مباشرةً قبل الكلمة المفتاحية للحلقة.
search: for n in 1...5 {
print(n)
if n == 3 { break search }
}اصطلاح التسمية
التسميات معرّفات عادية. اختاروا أسماء وصفية مثل outer أو rowLoop أو search.
rowLoop: for r in 1...2 {
print("processing row", r)
}break مع تسمية
تخرج break label من الحلقة التي تحمل تلك التسمية، وليس من الحلقة الداخلية فقط.
outer: for i in 1...3 {
for j in 1...3 {
if j == 2 { break outer }
print(i, j)
}
}continue مع تسمية
تنتقل continue label إلى التكرار التالي للحلقة التي تحمل التسمية.
outer: for i in 1...3 {
for j in 1...3 {
if j == 2 { continue outer }
print(i, j)
}
}التسميات مع حلقات while
يمكن تسمية أي حلقة، بما في ذلك while.
var i = 0
mainLoop: while i < 5 {
i += 1
if i == 3 { break mainLoop }
print(i)
}لماذا تساعد التسميات
من دون تسميات، تخرج break من الحلقة الداخلية فقط. أما التسميات فتتيح لكم التحكم مباشرةً في الحلقات الخارجية.
grid: for x in 0...2 {
for y in 0...2 {
if x + y == 3 { break grid }
print(x, y)
}
}تسميات متعددة
يمكنكم تسمية عدة حلقات متداخلة واستهداف كل منها بشكل مستقل.
rows: for r in 1...2 {
cols: for c in 1...2 {
if c == 2 { continue rows }
print(r, c)
}
}التسميات توضّح القصد
توضح التسمية ذات الاسم الجيد الحلقة التي يؤثر فيها الانتقال، مما يحسّن قابلية قراءة الشيفرة المتداخلة.
scan: for value in [3, 6, 9, 12] {
if value > 8 { break scan }
print(value)
}نطاق التسمية
تكون التسمية مرئية داخل حلقتها فقط. ولا يمكنكم استخدام break للانتقال إلى تسمية لا تحتوي العبارة الحالية ضمن نطاقها.
first: for a in 1...2 {
print("a", a)
second: for b in 1...2 {
if b == 2 { break first }
print("b", b)
}
}الدمج مع الشروط
تتوافق التسميات طبيعيًا مع الشروط لتنفيذ منطق البحث والتوقف عبر أبعاد متعددة.
let matrix = [[1, 2], [3, 4]]
var target = -1
find: for row in matrix {
for v in row {
if v == 3 {
target = v
break find
}
}
}
print(target)تحقق سريع
اختبروا العبارات ذات التسميات.
مراجعة
تتيح التسمية (name: قبل الحلقة) لـ break name وcontinue name استهداف تلك الحلقة تحديدًا بدلًا من الحلقة الداخلية. ويقتصر نطاق التسميات على حلقاتها، كما تجعل التحكم في الحلقات المتداخلة واضحًا.
outer: for i in 1...2 {
for j in 1...2 {
if j == 2 { continue outer }
print(i, j)
}
}الأسئلة الشائعة
هل درس «العبارات ذات التسميات» مجاني؟
نعم — نص درس «العبارات ذات التسميات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «العبارات ذات التسميات»؟
استهدف الحلقات الخارجية باستخدام تسميات مخصصة. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «العبارات ذات التسميات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات break و continue
- العبارات ذات التسميات
- الخروج من الحلقات المتداخلة
- التحكم في الحلقات ضمن سياق switch