gpt4 book ai didi

variables - 为什么修改未声明为可变的变量时编译器不报错?

转载 作者:行者123 更新时间:2023-11-29 08:20:27 24 4
gpt4 key购买 nike

我安装了 Rust 1.13 并尝试了:

fn main() {
let x: u32;
x = 10; // no error?
}

当我编译这个文件时有一些警告,但没有错误。因为我没有将 x 声明为 mut,所以 x = 10; 不应该导致错误吗?

最佳答案

您所写的内容与:

let x: u32 = 10;

此后编译器将不允许您改变它:

let x: u32;
x = 10;
x = 0; // Error: re-assignment of immutable variable `x`

请注意,如果您尝试使用未初始化的变量,则会出现编译器错误:

let x: u32;
println!("{}", x); // Error: use of possibly uninitialized variable: `x`

如果您想根据运行时条件以不同方式初始化变量,则此功能非常有用。一个天真的例子:

let x: u32;
if condition {
x = 1;
} else if other_condition {
x = 10;
} else {
x = 100;
}

但如果有未初始化的可能性,它仍然会报错:

let x: u32;
if condition {
x = 1;
} else if other_condition {
x = 10;
} // no else
println!("{:?}", x); // Error: use of possibly uninitialized variable: `x`

关于variables - 为什么修改未声明为可变的变量时编译器不报错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51908293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com