Menu
Coddy logo textTech

מבני טופל

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

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

מבנה tuple משלב את היתרונות של יצירת טיפוס חדש עם הפשטות של tuple. מגדירים אותו באמצעות מילת המפתח struct, ואחריה שם הטיפוס וסוגי השדות בסוגריים:

struct Color(i32, i32, i32);

הדבר יוצר טיפוס Color שמכיל שלושה ערכי i32, המייצגים ערכי צבע RGB. בניגוד למבנים רגילים, לא מציינים שמות שדות — ניגשים לערכים לפי מיקומם, בדיוק כמו בטאפלים.

כדי ליצור מופע של מבנה מסוג tuple, מספקים ערכים בסוגריים עגולים:

let red = Color(255, 0, 0);

אפשר לגשת לשדות בודדים באמצעות סימון נקודה עם האינדקס של השדה: red.0 נותן לך את הערך הראשון, red.1 את השני, וכן הלאה.

challenge icon

אתגר

קל

תקבלו שלושה קלטים: ערך אדום (כמספר שלם), ערך ירוק (כמספר שלם) וערך כחול (כמספר שלם). הגדירו מבנה tuple בשם Color שמכיל שלושה ערכי i32 המייצגים את רכיבי צבע ה-RGB. צרו מופע של מבנה ה-tuple הזה באמצעות ערכי הקלט, ואז גשו לכל רכיב צבע והדפיסו אותו באמצעות סימון אינדקס.

דרישות:

  • הגדירו מבנה tuple בשם Color עם שלושה שדות מסוג i32
  • קראו את הקלט הראשון והמירו אותו ל-i32 עבור הערך האדום
  • קראו את הקלט השני והמירו אותו ל-i32 עבור הערך הירוק
  • קראו את הקלט השלישי והמירו אותו ל-i32 עבור הערך הכחול
  • צרו מופע של מבנה ה-tuple Color עם הערכים האלה
  • גשו לכל שדה באמצעות סימון נקודה עם האינדקסים (0, 1, 2) והדפיסו את פרטי הצבע בפורמט המדויק שמוצג להלן

קלט:

  • שורה ראשונה: הערך האדום כמספר שלם (למשל, 255)
  • שורה שנייה: הערך הירוק כמספר שלם (למשל, 128)
  • שורה שלישית: הערך הכחול כמספר שלם (למשל, 0)

פלט:

  • שורה ראשונה: Red: [red_value]
  • שורה שנייה: Green: [green_value]
  • שורה שלישית: Blue: [blue_value]

נסו בעצמכם

use std::io;

// TODO: הגדירו כאן את מבנה ה-tuple בשם Color

fn main() {
    // קראו את הערך של האדום
    let mut red_input = String::new();
    io::stdin().read_line(&mut red_input).expect("Failed to read line");
    let red: i32 = red_input.trim().parse().expect("Invalid input");
    
    // קראו את הערך של הירוק
    let mut green_input = String::new();
    io::stdin().read_line(&mut green_input).expect("Failed to read line");
    let green: i32 = green_input.trim().parse().expect("Invalid input");
    
    // קראו את הערך של הכחול
    let mut blue_input = String::new();
    io::stdin().read_line(&mut blue_input).expect("Failed to read line");
    let blue: i32 = blue_input.trim().parse().expect("Invalid input");
    
    // TODO: צרו מופע של מבנה ה-tuple בשם Color באמצעות ערכי הקלט
    
    // TODO: גשו לכל רכיב צבע והדפיסו אותו באמצעות סימון אינדקס
    // פורמט: Red: [value], Green: [value], Blue: [value]
}
quiz iconבחנו את עצמכם

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

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

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