Типы¶
Ü есть статически-типизированный язык, что означает, что каждая переменная должна иметь известный на этапе компиляции тип.
В Ü есть несколько классов типов:
Фундаментальные¶
Фундаментальные типы являются основой системы типов, все остальные типы строятся с их использованием. В Ü существуют следующие фундаментальные типы:
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
.
Структуры и классы¶
Структуры и классы представляют собой набор именованных значений различных типов плюс ассоциированные функции, типы, переменные. См. Структуры и Классы.
Перечисления¶
См. Перечисления.
Указатели на функцию¶
См. Указатели на функцию.
Сырые указатели¶
См. Сырые указатели.