מהו 'Option'?
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 35 מתוך 66.
בתכנות, לעיתים קרובות נתקלים במצבים שבהם ערך עשוי להיות קיים או לא. לדוגמה, חיפוש פריט ברשימה עשוי למצוא אותו, או שהוא עשוי לא להתקיים כלל. שפות תכנות מסורתיות משתמשות לעיתים קרובות בערכים מיוחדים כמו null או -1 כדי לייצג "כלום", אבל גישה זו עלולה להוביל לבאגים ולקריסות.
Rust נוקטת גישה שונה באמצעות ה-enum Option<T>. זהו טיפוס מובנה שמייצג במפורש אפשרות של היעדר ערך. במקום לנחש אם ערך קיים, Rust מחייבת אותך לטפל מראש בשני המקרים.
ל-enum Option יש בדיוק שתי אפשרויות:
Some(value) // מכיל ערך
None // לא מכיל ערךכשייתכן שפונקציה לא תחזיר ערך, היא מחזירה Option. אם יש ערך להחזיר, היא עוטפת אותו ב־Some. אם אין ערך, היא מחזירה None.
כך ההיעדר האפשרי מצוין במפורש במערכת הטיפוסים, וכך נמנע ממך להשתמש בטעות בערך שאינו קיים.
כבר ראיתם את Option בפעולה עם המתודה .get() של מפת גיבוב — היא מחזירה Some(&value) כשהמפתח קיים, או None כשהוא לא קיים. התבנית הזאת מופיעה בכל רחבי Rust, והופכת את הקוד שלכם לבטוח וצפוי יותר.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1זרימת בקרה מתקדמת
ביטוי 'match'התאמה למספר ערכיםהתאמה לטווחיםביטוי 'if let'לולאות כביטוייםסיכום – מנתח פקודות פשוט4קיבוץ נתונים באמצעות מבנים
מהו מבנה?סקירה כללית על מבניםגישה לשדות במבנהמבנים הניתנים לשינוימבנים כפרמטרים של פונקציהמבני טופלסיכום – יצירת מבנה ספר7טיפול בשגיאות באמצעות 'Result'
מהו 'Result'?שימוש ב-'match' עם 'Result'is_ok() ו-is_err()קיצורי דרך: unwrap ו-expectאופרטור סימן השאלה '?'המרת מחרוזות למספריםסיכום - פונקציית חילוק בטוחה10Closures ופונקציות אנונימיות
מהו Closure?הגדרת Closure פשוטClosures עם פרמטריםלכידת הסביבהסיכום – Closure פשוט לחיבור2מבוא לווקטורים
מהו וקטור?יצירת וקטורהוספת איברים באמצעות pushגישה לאיברי וקטורמעבר על וקטורמעבר ניתן לשינויהסרת איבריםסיכום – מעקב בסיסי אחר ניקוד5זוגות מפתח-ערך באמצעות מפות גיבוב
מהי מפת גיבוב?יצירת מפת גיבובהוספת זוגות מפתח-ערךגישה לערכיםמעבר על מפת גיבובעדכון ערךהסרת זוגסיכום – מונה מילים6טיפול בהיעדר באמצעות 'Option'
מהו 'Option'?שימוש ב-'match' עם 'Option'is_some() ו-is_none()חילוץ ערך מתוך 'Option'המתודה expectהגדרת ברירת מחדל: unwrap_orסיכום – מציאת איברתרגלו בעצמכם: קומפיילר Rust אונליין