Перейти к основному содержимому

Правила глобального/локального хранения

В Wave срок хранения и изменяемость четко разграничены на уровне ключевых слов.

Резюме

  • Глобальная константа: 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 неизменяем и не может быть переназначен.