Типы¶
Ü есть статически-типизированный язык, что означает, что каждая переменная должна иметь известный на этапе компиляции тип.
В Ü есть несколько классов типов:
Фундаментальные¶
Фундаментальные типы являются основой системы типов, все остальные типы строятся с их использованием. В Ü существуют следующие фундаментальные типы:
- void- предназначен для возвращаемого значения функций, которым ничего не надо возвращать. Имеет нулевой размер.
- bool- логический тип, принимает значения- trueи- false.
- Целочисленные знаковые типы - - i8,- i16,- i32,- i64,- i128,- ssize_type.
- Целочисленные беззнаковые типы - - u8,- u16,- u32,- u64,- u128,- size_type.
- Вещественные типы - - f32,- f64.
- Символьные типы - - char8,- char16,- char32.
- Типы для представления сырых данных - - byte8,- byte16,- byte32,- byte64,- byte128.
Числовой суффикс в названиях ряда типов означает их размер, в битах.
Массивы¶
Массивы представляют собой упорядоченное множество значений какого-либо типа с размером, известным на этапе компиляции.
Примеры объявления типов массивов:
[ i32, 4 ] // Массив из четырёх элементов типа "i32"
[ char8, 8 ] // Массив из восьми элементов типа "char8"
[ [ f32, 4 ] , 4 ] // Двумерный массив с элементом типа "f32"
[ bool, 0 ] // Пустой массив
Доступ к элементам массива осуществляется через оператор []. Внутри [] должно быть выражение целочисленного беззнакового типа с индексом.
var [ i32, 4 ] mut arr= zero_init;
var u32 i= 1;
arr[0]= 66;
arr[i]= 55;
arr[2]= arr[0] + arr[3];
Кортежи¶
Кортежи представляют собой упорядоченное множество значений, каждое из которых может иметь свой тип.
Примеры объявлений типов кортежей:
tup[ i32, f32 ] // Кортеж из двух элементов различных типов
tup[] // Пустой кортеж
tup[ i32, i32, i32 ] // Кортеж из элемнтов одного типа
tup[ i32, f32, f32, bool, [ i32, 2 ], char8, [ char16, 8 ], tup[ bool, f64 ], u64 ] // В кортеже могут быть массивы и другие кортежи
Доступ к элементам кортежа осуществляется через оператор []. Внутри [] должно быть выражение - константа времени компиляции целочисленного типа с индексом.
var tup[ i32, f32, bool ] mut t= zero_init;
t[0]= 55;
t[1]= 3.7f;
t[2]= f32(t[0]) == t[1];
Элементы кортежей можно перебирать через конструкцию for.
Структуры и классы¶
Структуры и классы представляют собой набор именованных значений различных типов плюс ассоциированные функции, типы, переменные. См. Структуры и Классы.
Перечисления¶
См. Перечисления.
Указатели на функцию¶
См. Указатели на функцию.
Сырые указатели¶
См. Сырые указатели.
