دليل النطاق (Range)
جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 65 من 75.
في هذا الدرس، سنستكشف المزيد حول كيفية عمل range.
نطاق بناء الجملة الأساسي:
start..end- ينشئ نطاقاً من البداية إلى النهاية (غير شامل)start..=end- ينشئ نطاقاً من البداية إلى النهاية (شامل)
..end- ينشئ نطاقاً من 0 إلى end (غير شامل)..=end- ينشئ نطاقاً من 0 إلى end (شامل)
start..- ينشئ نطاقاً من start إلى ما لا نهاية..- ينشئ نطاقاً من سالب ما لا نهاية إلى موجب ما لا نهاية
عكس النطاق باستخدام .rev():
(0..5).rev()- 4, 3, 2, 1, 0(0..=5).rev()- 5, 4, 3, 2, 1, 0
القفز بخطوات باستخدام .step_by(n):
(0..10).step_by(2)- 0, 2, 4, 6, 8(0..10).rev().step_by(2)- 9, 7, 5, 3, 1
على سبيل المثال:
// نطاق أمامي أساسي
for i in 0..5 { }
// القيم: 0، 1، 2، 3، 4// نطاق شامل
for i in 0..=5 { }
// القيم: 0, 1, 2, 3, 4, 5// نطاق عكسي
for i in (0..5).rev() { }
// القيم: 4, 3, 2, 1, 0// الخطوة بمقدار 2
for i in (0..10).step_by(2) { }
// القيم: 0, 2, 4, 6, 8// الجمع بين العكس والخطوة
for i in (0..10).rev().step_by(3) { }
// القيم: 9، 6، 3، 0التحدي
سهلأنشئ برنامجاً يبدأ بمصفوفتين من الأرقام ويطبع للمصفوفة الأولى جميع الأرقام بترتيب عكسي بقفزات مقدارها 3 عبر مواقع المصفوفة، وللمصفوفة الثانية يطبع جميع الأرقام التي تقبل القسمة على 4 بترتيب عكسي. اطبع بالتنسيق التالي:
Array 1: [1], [2], [3], ...
Array 2: [1], [2], [3], ...ورقة مرجعية
بناء جملة النطاق (Range syntax) في Rust:
start..end- ينشئ نطاقاً من البداية إلى النهاية (غير شامل للنهاية)start..=end- ينشئ نطاقاً من البداية إلى النهاية (شامل للنهاية)..end- ينشئ نطاقاً من 0 إلى النهاية (غير شامل للنهاية)..=end- ينشئ نطاقاً من 0 إلى النهاية (شامل للنهاية)start..- ينشئ نطاقاً من البداية إلى ما لا نهاية..- ينشئ نطاقاً من سالب ما لا نهاية إلى موجب ما لا نهاية
النطاقات العكسية باستخدام .rev():
(0..5).rev()- 4، 3، 2، 1، 0(0..=5).rev()- 5، 4، 3، 2، 1، 0
قفزات الخطوات باستخدام .step_by(n):
(0..10).step_by(2)- 0، 2، 4، 6، 8(0..10).rev().step_by(2)- 9، 7، 5، 3، 1
// نطاق أمامي أساسي
for i in 0..5 { }
// القيم: 0، 1، 2، 3، 4
// نطاق شامل
for i in 0..=5 { }
// القيم: 0، 1، 2، 3، 4، 5
// نطاق عكسي
for i in (0..5).rev() { }
// القيم: 4، 3، 2، 1، 0
// خطوة بمقدار 2
for i in (0..10).step_by(2) { }
// القيم: 0، 2، 4، 6، 8
// الجمع بين العكس والخطوة
for i in (0..10).rev().step_by(3) { }
// القيم: 9، 6، 3، 0جرّب بنفسك
fn main() {
let numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26];
let numbers2 = [17, 53, 24, 77, 84, 98, 24, 36, 89, 31, 36];
print!("Array 1: ");
// اكتب كودك هنا
println!();
print!("Array 2: ");
// اكتب كودك هنا
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)اختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
الطباعة على الكونسولقراءة مدخلات المستخدممراجعة - حتى 120مراجعة - True أو False2المتغيرات - الجزء الأول
الأرقامالمحارف (Char)النصوص (String)القيم المنطقية (Boolean)المتغيرات القابلة للتغيير5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالث11الدوال
تعريف الدوالالمعاملات والوسائطقيم الإرجاعقيم إرجاع متعددةمراجعة - دالة Sigmaمراجعة - دالة التحقق14التكرار عبر المصفوفات
دليل النطاق (Range)حلقة For المحسنةالاستعارة في الحلقةعمليات المصفوفات الشائعة3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةاستنتاج النوعمراجعة - تهيئة المتغيراتتحويل الأنواع9الحلقات التكرارية
For عبر السلاسلحلقة Whileجملة Breakجملة Continueالحلقات المتداخلةتسميات الحلقاتالحلقة اللانهائيةمراجعة - الإدخال الديناميكي