Продолжительность хранения и изменчивость

Различайте область действия и возможность записи var, const и static.

Wave Foundation

Значение каждого заявления

формат Разрешенное местоположение повторное присваивание Использование
var Функция/блок возможно Общие изменяемые локальные переменные
const топ невозможно Объявление глобальной константы
static топ возможно Статические хранимые объявления, существующие на протяжении всего срока службы программы.
const PAGE_SIZE: i32 = 4096;
static request_count: i64 = 0;

fun main() {
    var limit: i32 = 4;
    var current: i32 = 0;
    var retries: i32 = 0;

    current += 1;
    retries += 1;
    println("{} {} {}", limit, current, retries);
}

Правила локальных объявлений

var value: i32 = 1;
value = 2;

Новое значение может быть присвоено локальной переменной, объявленной как var. Константы, которые будут использоваться во всей программе, объявляются на верхнем уровне как const.

Локальное использование const и static

const и static являются объявлениями верхнего уровня. Тело функции и инициализация for используют локальное объявление var.

Продолжительность жизни и указатели

Вы можете получить адрес локальной переменной как &, но тип ptr<T> не отслеживает фактическое время жизни хранилища, на которое указывает указатель. При передаче адреса локального хранилища из функции структура программы должна напрямую гарантировать, что адрес остается действительным.

Обучение и примеры

Практика по полной программе · Стандартная библиотека