דלג לתוכן הראשי

כללי אחסון גלובלי/מקומי

Wave מבדיל בבירור בין אורך החיים של אחסון (storage) לבין האפשרות לשינוי (mutability) ברמת המפתח.

סיכום

  • קבוע גלובלי: const
  • משתנה אחסון גלובלי: static
  • משתנה מקומי: var, let, let mut

כלומר, ברמה העליונה מוצהרים רק const ו- static , ואילו בתוך פונקציות או בלוקים מוצהרים רק משתני var ו- let.

קבוע גלובלי: const

const נחשב כקבוע בזמן קומפילציה ולא ניתן להקצאה מחדש.

const PAGE_SIZE: i32 = 4096;
const MAGIC: i32 = 0x1BADB002;

משתנה אחסון גלובלי: static

static הוא משתנה המחזיק מרחב אחסון גלובלי. ניתן להקצות מחדש, ואם לא ניתן ערך התחלתי, הוא יתאפס לערך ה-0 של הטיפוס.

static COUNTER: i32 = 0;
static VGA_BUFFER: ptr<char> = 0xb8000 as ptr<char>;

משתנה מקומי: var / let

רק מילות מפתח של משתנים מקומיים משמשות בתוך פונקציה או בלוק.

fun main() -> i32 {
var x: i32 = 10;
let y: i32 = 20;
let mut z: i32 = 30;

x = x + 1;
z = z + 1;
return x + y + z;
}

מגבלות

  • var, let לא ניתן לשימוש ברמה העליונה.
  • const, static אינם ניתנים לשימוש בתוך פונקציה או בלוק.
  • let הוא אינו בר שינוי ולא ניתן להקצאה מחדש.