60 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Loops
 | |
| localeTitle: الحلقات
 | |
| ---
 | |
| # الحلقات
 | |
| 
 | |
| داخل الصدأ هناك ثلاثة أنواع من آليات الحلقات المحلية: `loop` ، `while` ، `loop` `for` .
 | |
| 
 | |
| ## تكرار لانهائي مع `loop`
 | |
| 
 | |
| في Rust ، ستستمر بنية `loop` تنفيذ كتلة من الشفرة الإعلانية إلى ما لا نهاية (أو حتى تخبرها صراحة بالتوقف).
 | |
| 
 | |
| في ما يلي مثال على برنامج باستخدام `loop` لطباعة الكلمة "مرة أخرى" باستمرار إلى المحطة:
 | |
| 
 | |
| ```rust
 | |
| fn main() {
 | |
|     loop {
 | |
|         println!("again!");
 | |
|     }
 | |
| }
 | |
| ``` 
 | |
| 
 | |
| ## حلقات شرطية مع `while`
 | |
| 
 | |
| الآلية المذكورة أعلاه ليست مفيدة للغاية ما لم نقدم نوعًا من شروط التوقف `loop` للتحقق منها. لحسن الحظ ، يحتوي Rust على بنية حلقات مدمجة تم استدعائها `while` الاستخدام ، والتي يمكنك استخدامها لتنفيذ كتلة من التعليمات البرمجية بشكل مستمر في حين أن بعض الشرط صحيح.
 | |
| 
 | |
| في ما يلي مثال لبرنامج يستخدم `while` العد التنازلي من 5:
 | |
| 
 | |
| ```rust
 | |
| 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` :
 | |
| 
 | |
| ```rust
 | |
| 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) . |