יצירת וקטור
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 8 מתוך 66.
עכשיו, לאחר שהבנת מה הם וקטורים, נלמד איך ליצור אותם. Rust מספקת שתי דרכים עיקריות ליצירת וקטור, וכל אחת מתאימה למצבים שונים.
השיטה הראשונה משתמשת ב־Vec::new() כדי ליצור וקטור ריק שאפשר להוסיף לו איברים בהמשך:
let mut numbers = Vec::new();שימו לב שאנחנו משתמשים ב־mut כי סביר להניח שנרצה להוסיף איברים לווקטור הריק הזה בהמשך. Rust לא תמיד יכולה לקבוע את הטיפוס של וקטור ריק, ולכן ייתכן שתצטרכו לציין אותו במפורש:
let mut numbers: Vec<i32> = Vec::new();השיטה השנייה משתמשת במאקרו vec![] כדי ליצור וקטור עם ערכים התחלתיים:
let numbers = vec![1, 2, 3, 4, 5];המאקרו vec![] נוח יותר כשידועים לך ערכי ההתחלה. Rust יכולה לקבוע באופן אוטומטי את הטיפוס מתוך הערכים שסיפקת, כך שאין צורך בהערת טיפוס. הווקטור הזה מכיל חמישה מספרים שלמים ומוכן לשימוש מיידי.
המאקרו vec![] תומך גם בתחביר חזרה ליצירת וקטור שמלא באותו ערך. השתמשו ב־vec![value; n] כדי ליצור וקטור עם n איברים, שכל אחד מהם מוגדר לערך value:
let zeros = vec![0; 5]; // [0, 0, 0, 0, 0]
let tens = vec![10; 3]; // [10, 10, 10]הדבר שימושי במיוחד כשרוצים ליצור וקטור בגודל מסוים שנקבע בזמן הריצה, למשל על סמך קלט מהמשתמש:
let n = 4;
let data = vec![10; n]; // [10, 10, 10, 10]שתי הגישות יוצרות אותו סוג של וקטור - הבחירה תלויה בשאלה אם יש לך ערכים התחלתיים או אם בכוונתך לבנות את הווקטור בהדרגה.
אתגר
קלתקבל מספר כקלט שמייצג כמה איברים וקטור צריך להכיל. קרא את הקלט, המר אותו למספר שלם וצור וקטור עם מספר כזה של איברים, כאשר כל איבר הוא המספר 10.
דרישות:
- קרא את הקלט והמר אותו למספר שלם
- צור וקטור באמצעות המאקרו
vec![] - הווקטור צריך להכיל את מספר האיברים שצוין
- הערך של כל איבר צריך להיות
10 - הדפס כל איבר בשורה נפרדת
קלט: מספר שלם יחיד שמייצג את מספר האיברים
פלט: הדפס כל איבר בווקטור בשורה נפרדת
נסו בעצמכם
use std::io;
fn main() {
// קראו את הקלט
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let n: usize = input.trim().parse().expect("Invalid input");
// TODO: כתבו את הקוד שלכם למטה
// צרו וקטור עם n איברים, שלכל אחד מהם הערך 10
// הדפיסו כל איבר בשורה נפרדת
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין