Rust/מערכים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
מאין תקציר עריכה
שורה 62:
 
{{הארה|זו לא הפעם הראשונה בה אנו רואים שהמספר הראשון המשתמש לאינדקס של משתנים הוא המספר 0. כבר נתקלנו בזה בשיעור על [[Rust/פלט והצללה|פלט והצללה]] כששלחנו ארגומנטים לפונקציית המאקרו println()!.}}
 
== למה בכלל צריך מערכים? ==
 
== מערכים - עשה ואל תעשה ==
=== {{עשה}} - קבלת אורך המערך ===
ניתן לקבל את אורכו של המערך על ידי שימוש בפונקציה .len(). לדוגמה:
<source lang = "rust">
let my_array = [1, 2, 3, 4];
let x = my_array.len();
println!("the array's length is: {}", x);
 
// output: the array's length is: 4
</source>
 
=== {{אל תעשה}} - השמה למערך לא מאותחל ===
לא ניתן לבצע פעולת השמה על מערך לא מאוחל, גם אם הוא הוגדר כ-muttable.
<source lang = "rust">
let mut my_array: [i32; 10];
my_array[5] = 5; // error: use of possibly uninitialized variable: `my_array`
</source>
 
=== {{עשה}} - אתחול כל איברי המערך עם ערך קבוע ===
ניתן לאתחל את כל האיברים של מערך מסויים עם ערך קבוע:
<source lang = "rust">
let mut my_array = [value, length];
</source>
בדוגמה מעל, בערך value נרשום את הקבוע שאנחנו רוצים שישוכפל וב-length את האורך של המערך.{{ש}}בדרך כלל נבחר לאתחל מערכים של מספרים עם המספר 0, למשל:
<source lang = "rust">
let mut my_array = [0, 10]; // my_array is [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
</source>
 
=== {{אל תעשה}} - יצירת מערך בגודל משתנה ===
לא ניתן ליצור מערך בגודל של משתנה מסויים. בהמשך נלמד מספר פתרונות להתגבר על בעיה זו.
<source lang = "rust">
let length = 10;
let mut my_array = [0; length]; // error: attempt to use a non-constant value in a constant
</source>
 
=== {{עשה}} - יצירת מערך בגודל משתנה קבוע ===
למרות האמור בסעיף הקודם, ניתן ליצור מערך בגודל של משתנה קבוע (שהוגדר כ-const). שימו לב שהטיפוס של הקבוע חייב להיות usize.
<source lang = "rust">
const length: usize = 10;
let mut my_array = [0; length];
</source>
 
=== {{אל תעשה}} - אתחול חלק מאיברי המערך ===
לא ניתן לאתחל רק את חלק מאיברי המערך עם ערך קבוע כלשהו.
<source lang = "rust">
let mut array1: [0; 10] = [0; 5]; // error: expected an array with a fixed size of 10 elements, found one with 5 elements
let mut array2: [0; 8] = [0, 3; 4, 5]; // error: wrong syntax
let mut array3: [0; 8] = [[0; 3], 4, 5]; // error: wrong syntax
</source>
 
=== {{עשה}} - השמת מערך אחד לתוך מערך אחר בעל גודל זהה ===
 
=== {{אל תעשה}} - השמת מערך אחד לתוך מערך אחר בעל גודל שונה ===