סיכום - ה-Shape Enum
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Rust של Coddy. שיעור 18 מתוך 61.
אתגר
קלבואו נבנה מחשבון גאומטריה שמשתמש ב-enum כדי לייצג צורות שונות, שכל אחת מהן שומרת את המידות שלה. ה-enum Shape שלך ידגים כיצד טיפוס יחיד יכול להכיל מבני נתונים שונים ולספק התנהגות אחידה באמצעות מתודות.
תיצור שני קבצים כדי לארגן את הקוד שלך:
shape.rs: הגדר enum ציבורי בשםShapeעם שתי וריאציות:Circle: מכילה ערך יחיד מסוגf64שמייצג את הרדיוס (תחביר של tuple)Rectangle: מכילה שדות בעלי שמות:width(f64) ו-height(f64)
areaבעזרת התאמת תבניות כדי לחשב את השטח הנכון בהתאם לווריאציה. עבור עיגולים, השתמש ב-3.14159בתור π.main.rs: הוסף את מודול הצורות שלך, צור מופע אחד מכל וריאציה של צורה באמצעות הקלטים שסופקו, והדפס את השטח של כל צורה.
המתודה area שלך צריכה להחזיר ערך מסוג f64. בזמן ההתאמה, פרק כל וריאציה כדי לחלץ את המידות שלה ולהחיל את הנוסחה המתאימה:
- שטח עיגול:
π × radius² - שטח מלבן:
width × height
הפלט שלך צריך להציג את השטח של כל צורה בשורה נפרדת, עם ספרה אחת בדיוק אחרי הנקודה העשרונית:
Circle area: {area}
Rectangle area: {area}לדוגמה, עבור עיגול שרדיוסו 5.0 ומלבן שרוחבו 4.0 וגובהו 6.0, הפלט יהיה:
Circle area: 78.5
Rectangle area: 24.0תקבל שלושה קלטים: רדיוס העיגול, רוחב המלבן וגובה המלבן.
נסו בעצמכם
mod shape;
use shape::Shape;
fn main() {
// קרא את הקלטים
let mut radius_input = String::new();
std::io::stdin().read_line(&mut radius_input).expect("Failed to read line");
let radius: f64 = radius_input.trim().parse().expect("Invalid number");
let mut width_input = String::new();
std::io::stdin().read_line(&mut width_input).expect("Failed to read line");
let width: f64 = width_input.trim().parse().expect("Invalid number");
let mut height_input = String::new();
std::io::stdin().read_line(&mut height_input).expect("Failed to read line");
let height: f64 = height_input.trim().parse().expect("Invalid number");
// TODO: צור צורה מסוג Circle באמצעות הרדיוס
// TODO: צור צורה מסוג Rectangle באמצעות הרוחב והגובה
// TODO: הדפס את השטח של כל צורה עם ספרה אחת אחרי הנקודה העשרונית
// פורמט: "Circle area: {area}" ו-"Rectangle area: {area}"
}
כל השיעורים ביחידה תכנות מונחה עצמים
1מתודות והתנהגות
מבוא לבלוקי מימושהפרמטר selfמתודות ניתנות לשינויפונקציות משויכותבלוקי מימוש מרוביםשרשור מתודותסיכום – פעולות מלבן4פרויקט: חיית מחמד וירטואלית
הגדרת חיית המחמדהאכלת חיית המחמד3Enums מתקדמים
Enums עם נתוניםמתודות ב-Enumsהתאמה של וריאנטים עם נתוניםחזרה על ה-Option Enumסיכום - ה-Shape Enumתרגלו בעצמכם: קומפיילר Rust אונליין