const warn = @import("std").debug.warn;
fn normal(x: i32) void {
x += 1;
warn("{}\n", x);
}
pub fn main() void {
var z: i32 = 12;
normal(z);
warn("{}\n", z);
}
发现参数x为常数不可以改变
下面是andr的话
- 默认的变量是const, 不是常数, 他们还会添加一个错误在可以使用const的地方使用了var
- 可以让读代码的人知道, 参数没有被修改过
- 如果你需要一个可变的参数, 可以像这样使用
var foo = parm
- 鼓励使用SSA风格的代码,zig认为这是惯用的
- In the case of non-scalar values, it allows zig's "direct parameter passing" to work.
- It matches variables that zig creates for if, while, for, etc, which are immutable "views" rather than copies (after the copy-elision-2 branch is done).