57 lines
2.6 KiB
Markdown
57 lines
2.6 KiB
Markdown
---
|
|
title: Loops
|
|
localeTitle: الحلقات
|
|
---
|
|
# الحلقات
|
|
|
|
داخل الصدأ هناك ثلاثة أنواع من آليات الحلقات المحلية: `loop` ، `while` ، `loop` `for` .
|
|
|
|
## تكرار لانهائي مع `loop`
|
|
|
|
في Rust ، ستستمر بنية `loop` تنفيذ كتلة من الشفرة الإعلانية إلى ما لا نهاية (أو حتى تخبرها صراحة بالتوقف).
|
|
|
|
في ما يلي مثال على برنامج باستخدام `loop` لطباعة الكلمة "مرة أخرى" باستمرار إلى المحطة:
|
|
|
|
`fn main() {
|
|
loop {
|
|
println!("again!");
|
|
}
|
|
}
|
|
`
|
|
|
|
## حلقات شرطية مع `while`
|
|
|
|
الآلية المذكورة أعلاه ليست مفيدة للغاية ما لم نقدم نوعًا من شروط التوقف `loop` للتحقق منها. لحسن الحظ ، يحتوي Rust على بنية حلقات مدمجة تم استدعائها `while` الاستخدام ، والتي يمكنك استخدامها لتنفيذ كتلة من التعليمات البرمجية بشكل مستمر في حين أن بعض الشرط صحيح.
|
|
|
|
في ما يلي مثال لبرنامج يستخدم `while` العد التنازلي من 5:
|
|
|
|
`fn main() {
|
|
let mut number = 5;
|
|
|
|
while number != 0 {
|
|
println!("{}", number);
|
|
number = number - 1;
|
|
}
|
|
}
|
|
`
|
|
|
|
قم بتشغيل الكود [هنا](https://play.rust-lang.org/?gist=62677371a8590be27c84dcae7068de57&version=stable) .
|
|
|
|
## متكررة من خلال مجموعة مع `for`
|
|
|
|
في بعض الحالات ، قد ترغب في التكرار والعمل على عناصر مجموعة (مثل صفيف). بينما يمكن تحقيق ذلك باستخدام `while` حلقة ومتغير مؤشر للوصول إلى كل عنصر، الصدأ يوفر `for` حلقة لجعل هذه العملية أسهل بكثير.
|
|
|
|
هنا هو برنامج سبيل المثال أن يطبع كل رقم في صفيف إلى المحطة باستخدام `for` :
|
|
|
|
`fn main() {
|
|
let collection = [15, 7, 2, 6, 9];
|
|
|
|
for element in collection.iter() {
|
|
println!("the value is: {}", element);
|
|
}
|
|
}
|
|
`
|
|
|
|
قم بتشغيل الكود [هنا](https://play.rust-lang.org/?gist=0c2acf21b96a81ebd411e4a7dc5a19fd&version=stable) .
|
|
|
|
مثل الكثير من `.iter()` في C ++ ، ترجع الدالة `.iter()` مكرر إلى `collection` ، والتي يمكن من خلال حلقات للوصول إلى كل `element` . لمزيد من المعلومات ، توجه إلى وثائق Rust حول [تدفق التحكم](https://doc.rust-lang.org/book/second-edition/ch03-05-control-flow.html) . |