סיכום – מאמת פרופיל משתמש
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 65 מתוך 66.
אתגר
קלתקבלו שלוש קלטים המייצגים פרופיל משתמש. הקלט הראשון הוא שם משתמש, השני הוא גיל והשלישי הוא כתובת דוא"ל. אמתו את הפרופיל לפי הכללים הבאים והדפיסו את ההודעה המתאימה:
כללי אימות:
- שם המשתמש חייב להכיל לפחות 3 תווים
- הגיל חייב להיות בין 13 ל־120 (כולל)
- כתובת הדוא"ל חייבת להכיל את הסמל
@
דרישות:
- קראו את הקלט של שם המשתמש והסירו רווחים לבנים
- קראו את הקלט של הגיל, הסירו רווחים לבנים והמירו אותו ל־
i32 - קראו את הקלט של כתובת הדוא"ל והסירו רווחים לבנים
- בדקו אם אורך שם המשתמש הוא לפחות 3 תווים
- בדקו אם הגיל נמצא בטווח 13 עד 120 (השתמשו ב־
matchעם טווחים) - בדקו אם כתובת הדוא"ל מכילה את התו
@(השתמשו בשיטה.contains()) - אם כל הבדיקות עוברות, הדפיסו:
Valid profile - אם שם המשתמש קצר מדי, הדפיסו:
Invalid username - אם הגיל מחוץ לטווח, הדפיסו:
Invalid age - אם כתובת הדוא"ל אינה מכילה
@, הדפיסו:Invalid email - בצעו את הבדיקות לפי הסדר: קודם שם המשתמש, אחר כך הגיל ולבסוף כתובת הדוא"ל
קלט:
- שורה ראשונה: שם משתמש (למשל,
alice123) - שורה שנייה: גיל (למשל,
25) - שורה שלישית: כתובת דוא"ל (למשל,
alice@example.com)
פלט:
- אחת מהאפשרויות:
Valid profile,Invalid username,Invalid ageאוInvalid email
נסו בעצמכם
use std::io;
fn main() {
// קראו את קלט שם המשתמש
let mut username = String::new();
io::stdin().read_line(&mut username).expect("Failed to read line");
let username = username.trim();
// קראו את קלט הגיל
let mut age_input = String::new();
io::stdin().read_line(&mut age_input).expect("Failed to read line");
let age: i32 = age_input.trim().parse().expect("Failed to parse age");
// קראו את קלט כתובת האימייל
let mut email = String::new();
io::stdin().read_line(&mut email).expect("Failed to read line");
let email = email.trim();
// TODO: כתבו את הקוד שלכם למטה כדי לאמת את הפרופיל
// בדקו את אורך שם המשתמש, את טווח הגיל ואת פורמט כתובת האימייל
// הדפיסו את ההודעה המתאימה בהתאם לתוצאות האימות
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין