Menu
Coddy logo textTech

סקירה כללית על מבנים

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

עכשיו, כשאתה מבין מהן structs, בוא נלמד איך ליצור אותן ולהשתמש בהן בפועל. התהליך כולל שני שלבים: תחילה מגדירים את המבנה של ה־struct, ואז יוצרים מופעים שלו.

כדי להגדיר struct, משתמשים במילת המפתח struct ואחריה שם ה־struct והשדות שלו בתוך סוגריים מסולסלים. לכל שדה יש שם וסוג:

struct User {
    username: String,
    active: bool,
}

הדבר יוצר תבנית עבור המבנה User עם שני שדות: username מסוג String ו-active מסוג bool.

מוסכמת שמות: שמות מבנים ב-Rust צריכים להשתמש ב-PascalCase (שנקראת גם UpperCamelCase), כלומר כל מילה מתחילה באות גדולה, למשל User, ProductItem או ShoppingCart. Rust תציג אזהרה אם לא תפעלו לפי המוסכמה הזאת.

לאחר שהגדרת struct, תוכל ליצור מופעים שלו על ידי ציון ערכים לכל אחד מהשדות:

let user1 = User {
    username: String::from("alice"),
    active: true,
};

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

כדי לגשת לשדות של מופע struct, השתמשו בסימון נקודה: כתבו את שם המופע ואחריו נקודה ואת שם השדה:

println!("Username: {}", user1.username);
println!("Active: {}", user1.active);

כאן, user1.username ניגש לשדה username של user1, ו־user1.active ניגש לשדה active. אפשר להשתמש בערכי השדות האלה בכל מקום שבו היית משתמש במשתנה רגיל.

challenge icon

אתגר

קל

תקבלו שלוש קלטים: שם מוצר, מחיר (כמספר עשרוני) וכמות במלאי (כמספר שלם). הגדירו struct בשם Product עם שלושה שדות: name מסוג String,‏ price מסוג f64 ו־stock מסוג i32. לאחר מכן צרו מופע של struct זה באמצעות ערכי הקלט והדפיסו את פרטי המוצר.

דרישות:

  • הגדירו struct בשם Product עם השדות: name: String,‏ price: f64 ו־stock: i32
  • קראו את הקלט הראשון כשם המוצר
  • קראו את הקלט השני והמירו אותו ל־f64 עבור המחיר
  • קראו את הקלט השלישי והמירו אותו ל־i32 עבור הכמות במלאי
  • צרו מופע של struct מסוג Product עם הערכים האלה
  • הדפיסו את פרטי המוצר בדיוק בפורמט שמוצג למטה

קלט:

  • שורה ראשונה: שם המוצר (לדוגמה, Laptop)
  • שורה שנייה: מחיר כמספר עשרוני (לדוגמה, 999.99)
  • שורה שלישית: כמות במלאי כמספר שלם (לדוגמה, 15)

פלט:

  • שורה ראשונה: Product: [name]
  • שורה שנייה: Price: $[price]
  • שורה שלישית: Stock: [quantity]

נסו בעצמכם

use std::io;

// TODO: הגדירו כאן את המבנה Product


fn main() {
    // קראו את שם המוצר
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed to read line");
    let name = name.trim().to_string();
    
    // קראו את המחיר
    let mut price_input = String::new();
    io::stdin().read_line(&mut price_input).expect("Failed to read line");
    let price: f64 = price_input.trim().parse().expect("Failed to parse price");
    
    // קראו את כמות המלאי
    let mut stock_input = String::new();
    io::stdin().read_line(&mut stock_input).expect("Failed to read line");
    let stock: i32 = stock_input.trim().parse().expect("Failed to parse stock");
    
    // TODO: צרו מופע של המבנה Product באמצעות ערכי הקלט
    
    
    // TODO: הדפיסו את פרטי המוצר בפורמט הנדרש
    
}
quiz iconבחנו את עצמכם

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

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

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