If 表达式 (if)

Zig 的 if 是一个表达式,这意味着它可以返回一个值。

基本用法

if (a > b) {
    x += 1;
} else {
    x -= 1;
}

作为表达式

const x = if (a > b) 1 else 0;

如果作为表达式使用,两个分支必须返回兼容的类型。

处理 Optionals

if 表达式可以用于解包可选类型。

const optional_value: ?u32 = 10;

if (optional_value) |value| {
    std.debug.print("Value is {}\n", .{value});
} else {
    std.debug.print("Value is null\n", .{});
}

也可以捕获指针来修改 payload:

var optional_value: ?u32 = 10;
if (optional_value) |*value| {
    value.* += 1;
}

处理 Error Unions

if 也可以用于处理错误联合。

if (functionReturningError()) |value| {
    std.debug.print("Success: {}\n", .{value});
} else |err| {
    std.debug.print("Error: {}\n", .{err});
}

另请参阅: