סיכום — הדמיה של מצביע חכם
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Rust של Coddy. שיעור 58 מתוך 61.
אתגר
קלבואו נבנה חיקוי של מצביע חכם בשם SmartBox שמדגים איך מצביעים חכמים אמיתיים של Rust עובדים מאחורי הקלעים! המעטפת שלך תהיה גנרית, תאפשר גישה לערך הפנימי שלה ותודיע אוטומטית כשהיא מתנקה.
תארגן את הקוד שלך בשני קבצים:
smart_box.rs: הגדר מבנה גנרי ציבוריSmartBox<T>עם שדה יחידvalueמסוגT. ממש את הפונקציה המשויכתnew, שיוצרת SmartBox ומדפיסה הודעת יצירה. הוסף מתודהgetשמחזירה הפניה לערך הפנימי. לבסוף, ממש את ה-traitDropכדי להדפיס הודעת ניקוי כשה-SmartBox יוצא מתחום הטווח.main.rs: הוסף את מודול smart_box והדגם את SmartBox שלך עם שני טיפוסים שונים. צורSmartBox<i32>שמכיל מספר ו-SmartBox<String>שמכיל טקסט (שניהם מתוך הקלטים הנתונים). הדפס את הערכים באמצעות המתודהgetשלך. הודעות Drop יופיעו אוטומטית כשהתיבות יצאו מתחום הטווח בסוף main.
כשנוצר SmartBox, עליו להדפיס:
SmartBox createdבעת גישה לערך, הדפס אותו בפורמט הזה:
Value: {value}כשמושמט SmartBox, עליו להדפיס:
SmartBox droppedלדוגמה, עבור הקלטים 42 ו-Hello:
SmartBox created
SmartBox created
Value: 42
Value: Hello
SmartBox dropped
SmartBox droppedשימו לב ששתי התיבות נוצרות תחילה, אחר כך ניגשים לערכים שלהן, ולבסוף שתיהן מושמטות בסדר הפוך (האחרונה שנוצרה מושמטת ראשונה) כש-main מסתיים.
תקבלו שני קלטים: ערך של מספר שלם (יש לנתח אותו כ-i32) וערך של מחרוזת.
נסו בעצמכם
mod smart_box;
use smart_box::SmartBox;
fn main() {
// קרא את הקלטים
let mut input1 = String::new();
std::io::stdin().read_line(&mut input1).expect("Failed to read line");
let number: i32 = input1.trim().parse().expect("Failed to parse number");
let mut input2 = String::new();
std::io::stdin().read_line(&mut input2).expect("Failed to read line");
let text = input2.trim().to_string();
// TODO: צור SmartBox<i32> שמכיל את המספר
// TODO: צור SmartBox<String> שמכיל את הטקסט
// TODO: הדפס את הערכים באמצעות המתודה get
// פורמט: "Value: {value}"
// הודעות Drop יופיעו אוטומטית כאשר main תסתיים
}
כל השיעורים ביחידה תכנות מונחה עצמים
1מתודות והתנהגות
מבוא לבלוקי מימושהפרמטר selfמתודות ניתנות לשינויפונקציות משויכותבלוקי מימוש מרוביםשרשור מתודותסיכום – פעולות מלבן4פרויקט: חיית מחמד וירטואלית
הגדרת חיית המחמדהאכלת חיית המחמדתרגלו בעצמכם: קומפיילר Rust אונליין