Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دليل النطاق (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
challenge icon

التحدي

سهل

أنشئ برنامجاً يبدأ بمصفوفتين من الأرقام ويطبع للمصفوفة الأولى جميع الأرقام بترتيب عكسي بقفزات مقدارها 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: ");
    // اكتب كودك هنا
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals