Menu
Coddy logo textTech

גישה לשדות במבנה

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 22 מתוך 66.

לאחר שיצרת מופע של struct, תצטרך דרך לשלוף את הערכים המאוחסנים בתוכו. ב-Rust משתמשים בסימון נקודה כדי לגשת לשדות בודדים בתוך struct.

התחביר פשוט: כותבים את שם המופע של המבנה, אחריו נקודה, ואז את שם השדה שרוצים לגשת אליו:

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

סימון נקודה זה פועל בדיוק כמו גישה למאפיינים בשפות תכנות אחרות. אפשר להשתמש בערכים שאליהם ניגשים בביטויים, להקצות אותם למשתנים או להעביר אותם לפונקציות — הם מתנהגים בדיוק כמו כל ערך אחר מאותו סוג.

challenge icon

אתגר

קל

יתקבלו שלושה קלטים: שם דגם של מכונית, שנת המכונית (כמספר שלם) והקילומטראז׳ שלה (כמספר שלם). הגדירו מבנה Car עם שלושה שדות: model מסוג String, year מסוג i32 ו-mileage מסוג i32. צרו מופע של המבנה הזה באמצעות ערכי הקלט, ואז גשו לכל שדה והדפיסו אותו.

דרישות:

  • הגדירו מבנה Car עם השדות: model: String, year: i32 ו-mileage: i32
  • קראו את הקלט הראשון כדגם המכונית
  • קראו את הקלט השני והמירו אותו ל-i32 עבור השנה
  • קראו את הקלט השלישי והמירו אותו ל-i32 עבור הקילומטראז׳
  • צרו מופע של המבנה Car עם הערכים האלה
  • השתמשו בסימון נקודה כדי לגשת לכל שדה והדפיסו את פרטי המכונית בפורמט המדויק שמוצג למטה

קלט:

  • שורה ראשונה: דגם המכונית (לדוגמה, Tesla Model 3)
  • שורה שנייה: השנה כמספר שלם (לדוגמה, 2022)
  • שורה שלישית: הקילומטראז׳ כמספר שלם (לדוגמה, 15000)

פלט:

  • שורה ראשונה: Car: [model]
  • שורה שנייה: Year: [year]
  • שורה שלישית: Mileage: [mileage] km

נסו בעצמכם

use std::io;

// TODO: הגדר כאן את המבנה Car עם השדות: model, year ו-mileage

fn main() {
    // קרא את דגם המכונית
    let mut model = String::new();
    io::stdin().read_line(&mut model).expect("Failed to read line");
    let model = model.trim().to_string();
    
    // קרא את השנה
    let mut year_input = String::new();
    io::stdin().read_line(&mut year_input).expect("Failed to read line");
    let year: i32 = year_input.trim().parse().expect("Invalid year");
    
    // קרא את הקילומטראז׳
    let mut mileage_input = String::new();
    io::stdin().read_line(&mut mileage_input).expect("Failed to read line");
    let mileage: i32 = mileage_input.trim().parse().expect("Invalid mileage");
    
    // TODO: צור מופע של המבנה Car באמצעות ערכי הקלט
    
    // TODO: גש לכל שדה והדפס אותו בפורמט הנדרש
    // Car: [model]
    // Year: [year]
    // Mileage: [mileage] km
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Rust אונליין