函数 (Functions)
Zig 中的函数使用 fn 关键字声明。
声明
函数必须指定参数类型和返回类型。
fn add(a: i32, b: i32) i32 {
return a + b;
}
如果函数不返回值,返回类型为 void。
fn printHello() void {
std.debug.print("Hello\n", .{});
}
参数
函数参数是不可变的(immutable)。如果你需要修改参数,必须传递指针。
fn increment(value: *i32) void {
value.* += 1;
}
递归
Zig 允许函数递归。
fn fib(n: u32) u32 {
if (n <= 1) return n;
return fib(n - 1) + fib(n - 2);
}
注意:对于深度递归,可能会发生堆栈溢出。Zig 编译器会尝试推断堆栈使用情况,但对于递归函数,通常无法准确推断。
extern 函数
用于声明在其他地方(如 C 库)定义的函数。
extern "c" fn printf(format: [*:0]const u8, ...) c_int;
inline 函数
可以使用 inline fn 提示编译器在调用点内联函数体。
inline fn add_inline(a: i32, b: i32) i32 {
return a + b;
}
这不仅是优化提示,有时对于某些编译时逻辑是必需的。
另请参阅:
- Errors (错误处理)