שיעורי מודול (2/2)
טיפוסים פרימיטיביים
Rust היא שפה מוקלדת סטטית, מה שאומר שהיא חייבת לדעת את סוג כל המשתנים בזמן ההידור. בדרך כלל, המהדר יכול להסיק את הסוג על סמך הערך שהוקצה, אך לפעמים יש צורך או מועיל לציין אותו באופן ידני.
טיפוסים פרימיטיביים בחלודה מחולקים לשתי קטגוריות עיקריות: סקלרים (ערך יחיד) ותרכובות (קבוצת ערכים).
סוגים סקלרים
סוגים סקלרים מייצגים ערך בודד. לחלודה יש ארבעה סוגים סקלרים בסיסיים:
- מספרים שלמים: מספרים שלמים. הם יכולים להיות חתומים (
i8,i16,i32,i64,i128,isize) או לא חתומים (i32,_IN__LINEu32,u64,u128,usize). סוג ברירת המחדל הואi32. - נקודה צפה: מספרים עם נקודות עשרוניות. הם יכולים להיות
f32אוf64(דיוק כפול, ברירת מחדל). - בוליאנים: מייצגים אמת לוגית עם
trueאוfalse(סוגbool). - תווים: ערך סקלרי יחיד של Unicode המוקף במרכאות בודדות (סוג
char), למשל,'a','ℤ', או אמוג'י'😻'.
דוגמה להערה מסוג מפורש:
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';סוגי תרכובות
סוגים מורכבים יכולים לקבץ ערכים מרובים לסוג אחד. לחלודה שני סוגי תרכובות פרימיטיביות עיקריות:
Tuples
טופל מקבץ ערכים מסוגים שונים לאוסף בגודל קבוע:
let person: (String, i32) = (String::from("Alice"), 30);
// Destructuring to extract values
let (name, age) = person;
// Direct access with index using dot (.)
let name_direct = person.0;
let age_direct = person.1;מערכים (רשימות בגודל קבוע)
מערך מקבץ מספר אלמנטים מאותו סוג** לאוסף בגודל קבוע המאוחסן בערימה:
let numbers = [1, 2, 3, 4, 5]; // Inferred as [i32; 5]
let first = numbers[0]; // Access by index
let third = numbers[2];אם תנסה לגשת לאינדקס מחוץ לגבולות המערך (לדוגמה, numbers[10]), Rust תקרוס מיד (בהלה) בזמן הריצה במקום לאפשר גישה לא מורשית לזיכרון.
השוואה
| תכונה | Tuple | מערך |
|---|---|---|
| סוגי אלמנטים | יכול להיות שונה | חייב להיות זהה |
| גודל | תוקן | תוקן |
| גישה | אינדקס באמצעות נקודה (למשל, .0) | סוגריים מרובעים (לדוגמה, [0]) |
נסה זאת בעצמך
הכריז על טאפל בשם סטטיסטיקה המכילה את גיל 30 (מספר שלם) ואת הציון 95.5 (צף). לאחר מכן, הדפס את הניקוד למסך על ידי גישה ישירה לאלמנט השני של ה-tuple באמצעות האינדקס שלו.
הצג רמז
צור את הטפול עם `let stats = (30, 95.5);`. גש לאלמנט השני באמצעות `stats.1` בתוך המאקרו `println!`.
הפתרון זמין לאחר 3 ניסיונות
הכריז על מערך בשם מספרים המכיל את ערכי המספרים השלמים מ-1 עד 5. הדפס את האלמנט השלישי של המערך (אינדקס 2) למסך באמצעות println!.
הצג רמז
הכריז על המערך עם `תן מספרים = [1, 2, 3, 4, 5];` וגשת לאלמנט השלישי על ידי הוספתו לאינדקס עם `[2]`.
הפתרון זמין לאחר 3 ניסיונות
בהינתן ה-tuple `let point = (10, 20);`, השתמש ב-destructuring כדי לחלץ את הערכים לשני משתנים בשם `x` ו-`y`. לאחר מכן, הדפס את הסכום של 'x' ו-'y'.
הצג רמז
השתמש בתחביר `let (x, y) = point;` כדי לבטל את המבנה של ה-tuple ולאחר מכן לסכם את המשתנים ב-`println!`.
הפתרון זמין לאחר 3 ניסיונות