2 2 Объявления переменной

## Объявление

Переменные объявляются выражением let.

let /*модификатор константности*/ x;

Свойство изменяемости можно указывать явно.

let mut x; // подлежит изменению

let const y; // не подлежит изменению

let z;       // компилятор сам разберётся как рабоать с переменной
let auto k;  // то же самое но явно

Задание типа

Переменные имеют свой тип. Изначально тип является шаблонным и компилятор выводит тип наиболее подходящий в конкретной ситуации.

Литералы

Значения переменных могут быть заданы по-разному. Тип значения автоматически выводится из типа переменной. Все литералы по умолчанию находятся в суперпозиции, где нет конкретного типа, тип подберётся автоматически в соответствиями с требованиями переменной на основании лучшего результата.

Тип значения целых чисел числится как bignum и может содержать большое число, больше чем можно
представить в виде реального значения.

Постфиксы

Постфиксы идут после числа или строки и определяют тип значения. Например:

let mut k = 10i;

Данный код определяет переменную k и инициализирует её целочисленным значением 10.

Постфиксы по знаку (целочисленные)

Постфикс Пример Тип
i 10i int
ui 10ui unsigned int
si -10si signed int
Постфиксы по размеру (целочисленные)
Постфикс Пример Размер
i8 10i8 byte
i16 665i16 word
i32 10_000i32 dword
i64 1000_000_000i64 qword

Числа можно разделять знаками подчёркивания для удобства чтения. Пример:

let const x = 10_000_000;
let const hex = 0x00_6a_91_ff;

Дроби

Язык поддерживает запись значений через числитель/знаменатель. Такая запись приведётся к ближайшему дробному числу.

var : real a = (1/2)real;

Проверка существования

Для проверки существования используется оператор exist() в статичном выражении #if. 3 1 if Мы можем во время компиляции проверить существование переменной.

let a; // работает как флаг
#if(exist(a)) // if помечен # как constexpr
{
    let a : str = "hello";
}
else
{
    let a : float = 0.3;
}

println!(a);
// Напечатает hello