גישה לאיברי וקטור
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 10 מתוך 66.
ברגע שיש לך וקטור עם איברים, תצטרך לגשת לערכים בודדים. Rust מספקת שתי גישות שונות לקבלת איברים מתוך וקטור, ולכל אחת מהן יתרונות וחסרונות מבחינת נוחות ובטיחות.
השיטה הראשונה משתמשת בתחביר אינדקס עם סוגריים מרובעים, בדומה למערכים:
let numbers = vec![10, 20, 30, 40];
let first = numbers[0]; // מקבל 10
let third = numbers[2]; // מקבל 30אף שהתחביר הזה מוכר ותמציתי, יש בו סיכון משמעותי: אם תנסה לגשת לאינדקס שלא קיים, התוכנית שלך תיכנס למצב בהלה ותקרוס:
let numbers = vec![10, 20, 30];
let invalid = numbers[5]; // זה יגרום לפאניקה!השיטה השנייה משתמשת בשיטה .get(), שמספקת גישה בטוחה:
let numbers = vec![10, 20, 30, 40];
let first = numbers.get(0); // מחזיר Some(10)
let invalid = numbers.get(5); // מחזיר Noneהמתודה .get() מחזירה Option — או Some(value) אם האינדקס קיים, או None אם לא. כך עליך לטפל באפשרות שהאיבר לא קיים, מה שמונע קריסות והופך את הקוד שלך לעמיד יותר.
אתגר
קלכתבו פונקציה get_element_at שמקבלת וקטור numbers ואינדקס idx, ומחזירה את האיבר שבאינדקס הזה באמצעות גישה בטוחה.
השתמשו בשיטה .get() כדי לגשת לאיבר בבטחה. אם האינדקס קיים, החזירו את הערך. אם האינדקס אינו קיים, החזירו -1 כערך ברירת מחדל.
פרמטרים:
numbers(Vec<i32>): הווקטור שאליו יש לגשתidx(i32): האינדקס שיש לאחזר
ערך מוחזר: האיבר שבאינדקס הנתון, או -1 אם האינדקס אינו קיים (i32)
נסו בעצמכם
fn get_element_at(numbers: Vec<i32>, idx: i32) -> 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 אונליין