0Pricing
Learn Rust Coding · درس

التفكيك البنيوي

Structs وenums وtuples

التفكيك البنيوي درس مجاني في Learn Rust Coding على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn Rust Coding، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

ما التفكيك البنيوي؟

يقسم التفكيك البنيوي قيمة مركبة إلى أجزائها باستخدام نمط. وهو يعمل مع الصفوف، والبنى، والتعدادات، والمصفوفات، وغير ذلك.

تفكيك الصفوف

أسندوا كل عنصر من عناصر الصف إلى متغيره الخاص ضمن let واحدة.

fn main() {
    let point = (3, 7);
    let (x, y) = point;
    println!("x = {x}, y = {y}");
}

تجاهل أجزاء الصف

استخدموا _ لتخطي قيمة واحدة، و.. لتخطي عدة قيم.

fn main() {
    let data = (1, 2, 3, 4);
    let (first, .., last) = data;
    println!("{first} ... {last}");
}

تفكيك البنى

استخرجوا الحقول من البنية حسب أسمائها. ويمكن أن تطابق أسماء المتغيرات المسندة أسماء الحقول أو يُعاد تسميتها.

struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let p = Point { x: 10, y: 20 };
    let Point { x, y } = p;
    println!("{x}, {y}");
}

إعادة تسمية الحقول

استخدموا field: new_name لإسناد حقل من بنية إلى اسم متغير مختلف.

struct Config {
    width: u32,
    height: u32,
}

fn main() {
    let c = Config { width: 800, height: 600 };
    let Config { width: w, height: h } = c;
    println!("{w} x {h}");
}

تجاهل حقول البنية

يتجاهل .. الحقول المتبقية التي لا تحتاجون إليها.

struct User {
    name: String,
    age: u32,
    active: bool,
}

fn main() {
    let u = User { name: "Ada".into(), age: 36, active: true };
    let User { name, .. } = u;
    println!("{name}");
}

تفكيك التعدادات

في match، فككوا متغيرات التعداد لاستخراج بياناتها.

enum Event {
    Click { x: i32, y: i32 },
    Key(char),
}

fn main() {
    let e = Event::Click { x: 5, y: 8 };
    match e {
        Event::Click { x, y } => println!("click at {x},{y}"),
        Event::Key(c) => println!("key {c}"),
    }
}

التفكيك البنيوي في المعاملات

يمكن للمعاملات في الدوال إجراء التفكيك البنيوي مباشرة، وهذا مفيد للصفوف والبنى الصغيرة.

fn distance((x1, y1): (f64, f64), (x2, y2): (f64, f64)) -> f64 {
    ((x2 - x1).powi(2) + (y2 - y1).powi(2)).sqrt()
}

fn main() {
    println!("{}", distance((0.0, 0.0), (3.0, 4.0)));
}

التفكيك البنيوي المتداخل

يمكن تداخل الأنماط بحرية، ولذلك تستطيعون الوصول بعمق إلى البنى في خطوة واحدة.

struct Line {
    start: (i32, i32),
    end: (i32, i32),
}

fn main() {
    let line = Line { start: (0, 0), end: (4, 5) };
    let Line { start: (sx, sy), end: (ex, ey) } = line;
    println!("from {sx},{sy} to {ex},{ey}");
}

تفكيك المصفوفات والمقاطع

يمكن تفكيك المصفوفات والمقاطع، بما في ذلك التقاط الجزء الأوسط باستخدام ...

fn main() {
    let arr = [1, 2, 3, 4, 5];
    let [first, .., last] = arr;
    println!("first {first}, last {last}");
}

التفكيك البنيوي في حلقات for

يعمل التفكيك البنيوي في حلقات for أيضًا، وهو مثالي للتكرار على أزواج من القيم.

fn main() {
    let pairs = [("a", 1), ("b", 2), ("c", 3)];
    for (label, value) in pairs {
        println!("{label} = {value}");
    }
}

اختبار سريع

كيف تتجاهلون الحقول المتبقية في بنية أثناء التفكيك البنيوي؟

مراجعة

لقد تعلمتم التفكيك البنيوي:

  • تفكيك الصفوف، والبنى، والتعدادات، والمصفوفات، والمقاطع
  • إعادة تسمية الحقول باستخدام field: name
  • تجاهل الأجزاء باستخدام _ و..
  • إجراء التفكيك البنيوي في let وmatch ومعاملات الدوال
  • تداخل الأنماط لاستخراج البيانات بعمق

الأسئلة الشائعة

هل درس «التفكيك البنيوي» مجاني؟

نعم — نص درس «التفكيك البنيوي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn Rust Coding، انتقل إلى CoddyKit PRO. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

ماذا ستتعلم في «التفكيك البنيوي»؟

Structs وenums وtuples تتمرن على Learn Rust Coding مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn Rust Coding؟

لا تُشترط خبرة سابقة. Learn Rust Coding على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «التفكيك البنيوي»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn Rust Coding هذا؟

نعم. كل درس في Learn Rust Coding يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعمّق في match
  2. if let وwhile let
  3. الربط باستخدام @
  4. التفكيك البنيوي
← العودة إلى Learn Rust Coding