סיכום - פונקציית חילוק בטוחה
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 48 מתוך 66.
אתגר
קלתקבלו שתי קלטים. הקלט הראשון הוא מספר שמייצג את המחולק, והקלט השני הוא מספר שמייצג את המחלק. צרו פונקציה safe_divide שמקבלת שני פרמטרים מסוג f64 ומחזירה Result<f64, &'static str>. הפונקציה צריכה להחזיר Err("Cannot divide by zero") כאשר המחלק הוא אפס, ולהחזיר Ok עם תוצאת החילוק אחרת. השתמשו בביטוי match כדי לטפל בתוצאה ולהדפיס את הפלט המתאים.
דרישות:
- קראו את הקלט הראשון (המחולק) והסירו רווחים לבנים
- נתחו את הקלט הראשון ל-
f64 - קראו את הקלט השני (המחלק) והסירו רווחים לבנים
- נתחו את הקלט השני ל-
f64 - צרו פונקציה
safe_divideשמקבלת שני פרמטרים מסוגf64ומחזירהResult<f64, &'static str> - בתוך הפונקציה, בדקו אם המחלק הוא
0.0:- אם כן, החזירו
Err("Cannot divide by zero") - אם לא, החזירו
Ok(dividend / divisor)
- אם כן, החזירו
- קראו לפונקציה עם שני המספרים שנותחו
- השתמשו בביטוי
matchכדי לטפל ב-Result - בזרוע
Ok(value), הדפיסו:Division result: [value] - בזרוע
Err(error), הדפיסו:Error: [error]
קלט:
- שורה ראשונה: מספר שמייצג את המחולק (לדוגמה,
20.0) - שורה שנייה: מספר שמייצג את המחלק (לדוגמה,
4.0)
פלט:
- אם החילוק הצליח:
Division result: [result] - אם מתבצע חילוק באפס:
Error: Cannot divide by zero
נסו בעצמכם
use std::io;
// TODO: צרו כאן את הפונקציה safe_divide
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
// הקוד שלכם כאן
// }
fn main() {
// קראו את הקלט הראשון (dividend)
let mut dividend_input = String::new();
io::stdin().read_line(&mut dividend_input).expect("Failed to read line");
let dividend: f64 = dividend_input.trim().parse().expect("Invalid number");
// קראו את הקלט השני (divisor)
let mut divisor_input = String::new();
io::stdin().read_line(&mut divisor_input).expect("Failed to read line");
let divisor: f64 = divisor_input.trim().parse().expect("Invalid number");
// TODO: קראו ל־safe_divide והשתמשו ב־match כדי לטפל ב־Result
// הדפיסו את הפלט המתאים בהתאם לתוצאה
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין