Управление потоком в Zig

Операторы управления потоком в языке программирования Zig определяются заданием программой одного или нескольких условных операторов.

Когда условие истинно, выполняется указанный код программы; когда условие ложно, выполняется другой указанный код.

Ниже приведена типичная блок-схема управления потоком:

Zig предоставляет следующие операторы управляющих структур:

Оператор if

Синтаксис

Базовый оператор if содержит условие и связанный блок кода. Если условие истинно, блок кода выполняется.

if (<condition) {
    // 如果 condition 为 true,执行这里的代码
}

Оператор if-else добавляет ветвь else к базовому оператору if. Если условие в if ложно, выполняется код в ветви else.

if (<condition>) {
    // 如果 condition 为 true,执行这里的代码
} else {
    // 如果 condition 为 false,执行这里的代码
}

условие:Логическое выражение. Если условие истинно, выполняется первый блок кода; в противном случае выполняется блок кода else.

Пример

const std = @import("std");

pub fn main() void {
    const x: i32 = 10;
    if (x > 5) {
        std.debug.print("x больше 5\n", .{});
    } else {
        std.debug.print("x не больше 5\n", .{});
    }
}

Вывод после компиляции и выполнения:

x is greater than 5

Оператор if-else...else

Синтаксис

Поддерживает множественные проверки условий, проверяя каждое условие по порядку, пока условие не станет истинным и не будет выполнен соответствующий блок кода.

Пример

if (condition1) {
    // Если condition1 истинно, выполните код здесь
} else if (condition2) {
    // Если condition2 истинно, выполните код здесь
} else {
    // Если все условия ложны, выполните код здесь
}

Пример

const std = @import("std");

pub fn main() void {
    const x: i32 = 10;
    if (x > 10) {
        std.debug.print("x is greater than 10\n", .{});
    } else if (x == 10) {
        std.debug.print("x is equal to 10\n", .{});
    } else {
        std.debug.print("x is less than 10\n", .{});
    }
}

Вывод после компиляции и выполнения:

x is equal to 10

Вложенный if-else

Операторы if-else могут быть вложенными, то есть можно включить другой оператор if в ветвь if или else.

if (<条件1>) {
    // 如果条件1为真,执行这里的代码
    if (<条件2>) {
        // 如果条件1和条件2都为真,执行这里的代码
    } else {
        // 如果条件1为真但条件2为假,执行这里的代码
    }
} else {
    // 如果条件1为假,执行这里的代码
}

Пример

const std = @import("std");

pub fn main() void {
    const input = 5; // Предположим, это ввод пользователя
    const max_value = 10;

    if (input > max_value) {
        std.debug.print("Введённое значение больше, чем {}\n", .{max_value});
    } else if (input == max_value) {
        std.debug.print("Введённое значение равно {}\n", .{max_value});
    } else {
        if (input < 5) {
            std.debug.print("Введённое значение меньше 5\n");
        } else {
            std.debug.print("Введённое значение между 5 и {}\n", .{max_value});
        }
    }
}

Вывод после компиляции и выполнения:

Input is between 5 and 10

Вывод типов в операторах if

Компилятор Zig может выводить тип переменных в операторах if, если результатом условного выражения является логическое значение.

const condition = true;
if (condition) {
    // 这里 condition 的类型是 bool,编译器自动推导
}
Другие расширения