انتقل إلى المحتوى الرئيسي

القواعد العامة/المحلية للتخزين

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 هي متغيرات تملك مساحة تخزينية عامة. يمكن إعادة تخصيصها، وإذا لم تعطى قيمة ابتدائية فسيتم تهيئتها بالقيمة صفر من نوعها.

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 ثابت ولا يمكن إعادة تخصيصه.