Skip to content

Latest commit

 

History

History
117 lines (84 loc) · 5.53 KB

ch-03-variables.md

File metadata and controls

117 lines (84 loc) · 5.53 KB

Переменные

Объявление

Язык 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.

Домашнее задание

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