Продолжительность хранения и изменчивость
Различайте область действия и возможность записи 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> не отслеживает фактическое время жизни хранилища, на которое указывает указатель. При передаче адреса локального хранилища из функции структура программы должна напрямую гарантировать, что адрес остается действительным.