پرش به مطلب اصلی

قوانین ذخیره‌سازی سراسری/محلی

Wave ذخیره‌سازی و تغییرپذیری را در سطح کلیدواژه‌ها به وضوح تفکیک می‌کند.

خلاصه

  • ثابت‌های سراسری: 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 نمی‌تواند در سطح بالا استفاده شود.
  • var, let در یک تابع/بلوک نمی‌تواند استفاده شود.
  • let غیر قابل تغییر است و نمی‌توان آن را دوباره تخصیص داد.