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) . |