המרת מחרוזות למספרים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 47 מתוך 66.
אחד השימושים הנפוצים ביותר של Result בעולם האמיתי הוא המרת מחרוזות למספרים. ב-Rust עושים זאת באמצעות המתודה .parse(), שמדגימה היטב מדוע Result קיים — כי פעולת הניתוח עלולה להיכשל.
המתודה .parse() מנסה להמיר מחרוזת למספר, אבל לא כל מחרוזת מייצגת מספר תקין. לדוגמה, אפשר לנתח את "42" למספר 42, אבל אי אפשר להמיר את "hello" לשום מספר:
let valid_number = "42";
let invalid_number = "hello";
let result1: Result = valid_number.parse();
let result2: Result = invalid_number.parse();כאשר הניתוח מצליח, .parse() מחזירה Ok(number) שמכיל את הערך שהומר. כאשר הוא נכשל, היא מחזירה Err(error) עם מידע על הסיבה לכישלון הניתוח. כך עליך לטפל במפורש בשתי האפשרויות, וכך נמנעת קריסת התוכנית שלך בעקבות קלט לא תקין.
אפשר לטפל בתוצאת הניתוח באמצעות כל אחת מהטכניקות של Result שלמדת — match לטיפול מפורש, unwrap() אם ברור לך שהפעולה תצליח, או האופרטור ? להעברת שגיאות הלאה.
אתגר
קלכתבו פונקציה parse_to_integer שמקבלת מחרוזת input ומחזירה את הערך השלם שפוענח. אם אי אפשר לפענח את המחרוזת כמספר שלם תקין, החזירו 0 כערך ברירת מחדל.
השתמשו בשיטה .parse() כדי להמיר את המחרוזת ל-i32, וטפלו ב-Result כראוי כדי לספק ערך החזרה בטוח.
פרמטרים:
input(String): המחרוזת שיש לפענח למספר שלם
ערך מוחזר: המספר השלם שפוענח אם הפעולה הצליחה, או 0 אם הפענוח נכשל (i32)
נסו בעצמכם
fn parse_to_integer(input: String) -> i32 {
// כתבו כאן קוד
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1זרימת בקרה מתקדמת
ביטוי 'match'התאמה למספר ערכיםהתאמה לטווחיםביטוי 'if let'לולאות כביטוייםסיכום – מנתח פקודות פשוט4קיבוץ נתונים באמצעות מבנים
מהו מבנה?סקירה כללית על מבניםגישה לשדות במבנהמבנים הניתנים לשינוימבנים כפרמטרים של פונקציהמבני טופלסיכום – יצירת מבנה ספר7טיפול בשגיאות באמצעות 'Result'
מהו 'Result'?שימוש ב-'match' עם 'Result'is_ok() ו-is_err()קיצורי דרך: unwrap ו-expectאופרטור סימן השאלה '?'המרת מחרוזות למספריםסיכום - פונקציית חילוק בטוחה10Closures ופונקציות אנונימיות
מהו Closure?הגדרת Closure פשוטClosures עם פרמטריםלכידת הסביבהסיכום – Closure פשוט לחיבור2מבוא לווקטורים
מהו וקטור?יצירת וקטורהוספת איברים באמצעות pushגישה לאיברי וקטורמעבר על וקטורמעבר ניתן לשינויהסרת איבריםסיכום – מעקב בסיסי אחר ניקוד5זוגות מפתח-ערך באמצעות מפות גיבוב
מהי מפת גיבוב?יצירת מפת גיבובהוספת זוגות מפתח-ערךגישה לערכיםמעבר על מפת גיבובעדכון ערךהסרת זוגסיכום – מונה מיליםתרגלו בעצמכם: קומפיילר Rust אונליין