Язык Zig позволяет работать с различными типами данных: числами (целыми и дробными), логическими значениями, текстовыми и символьными данными. Для работы с этими типами в коде объявляются переменные. Переменная в Zig - это объект, который может хранить значение. Есть константы const
и переменные var
. Предпочтение отдаётся константам. Переменные в Zig по умолчанию изменяемые и не требуют явного указания модификатора изменяемости.
const std = @import("std");
pub fn main() void {
const number: i32 = 2;
const other_number: i32 = 3;
std.debug.print("{}\n", .{number + other_number});
const float_number: f64 = 2.0;
const other_float_number: f64 = 3.0;
std.debug.print("{}\n", .{float_number + other_float_number});
const character: u8 = '='; // ASCII code for '='
const other_character: u8 = '!'; // ASCII code for '!'
std.debug.print("{}{}\n", .{character, other_character});
const boolean_true: bool = true;
const boolean_false: bool = false;
std.debug.print("{} != {}. {}\n", .{boolean_true, boolean_false, boolean_true != boolean_false});
}
В Zig по умолчанию все переменные изменяемые. Это означает, что значения переменных могут быть обновлены после первоначального присвоения.
const std = @import("std");
pub fn main() void {
var number: i32 = 2;
std.debug.print("{}\n", .{number});
number = 3;
std.debug.print("{}\n", .{number});
}
Zig поддерживает сокращенную запись арифметических операций, как например +=
, которая эквивалентна прибавлению значения непосредственно к переменной.
const std = @import("std");
pub fn main() void {
var variable_1: i32 = 1;
var variable_2: i32 = 1;
variable_1 = variable_1 + 1;
variable_2 += 1;
std.debug.print("variable_1 = {}\n", .{variable_1});
std.debug.print("variable_2 = {}\n", .{variable_2});
}
Zig не поддерживает скрытие переменных с одинаковыми именами в одной и той же области видимости. Переменные должны иметь уникальные имена, иначе это приведет к ошибке компиляции. Для создания новых переменных в блоках нужно использовать уникальные имена.
const std = @import("std");
pub fn main() void {
var n1: i32 = 1;
std.debug.print("{}\n", .{n1});
n1 = 2;
std.debug.print("{}\n", .{n1});
{
var n2: f64 = 3.14;
std.debug.print("{}\n", .{n2});
}
std.debug.print("{}\n", .{n1});
}
Изучите поведение программы при изменении типов данных и значений переменных. Попробуйте заменить числовые значения на символьные, логические, текстовые и изучите результат.
Компилятор Zig помогает исправлять ошибки и предупреждает о неверных конструкциях. Например, забыв инициализировать переменную перед её использованием, вы получите ошибку компиляции.
const std = @import("std");
pub fn main() void {
var number: i32; // Ошибка: неинициализированная переменная
// std.debug.print("{}\n", .{number});
}
Компилятор также предупреждает, если переменная объявлена, но не используется. В таких случаях будет целесообразно явно отметить этот факт.
const std = @import("std");
pub fn main() void {
var _number: i32 = 2; // Название переменной, начинающееся с _ подразумевает, что она может быть неиспользована
// std.debug.print("{}\n", .{number});
}
Язык Zig предоставляет обширную стандартную библиотеку для различных задач.
Изучайте другие функции и их применения для повышения эффективности работы с Zig.
Практикуйтесь в объявлении переменных и работе с различными типами данных в Zig. Попробуйте менять код и изучать сообщения компилятора, чтобы лучше понять особенности языка.