let val1 = 5;
let val2 = 2;
let ans = val1 % val2;
println!{"{}", ans};
let str1 = String::from("Hello");
let ans = concat_string(str1);
println!{"{}", ans};
control_flow(25);
这里重复定义了ans , 为什么编译器不会报错?
let val1 = 5;
let val2 = 2;
let ans = val1 % val2;
println!{"{}", ans};
let str1 = String::from("Hello");
let ans = concat_string(str1);
println!{"{}", ans};
control_flow(25);
这里重复定义了ans , 为什么编译器不会报错?
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言在 Rust 中,变量重复定义是允许的。每次重复定义后,上一个变量就会被遮盖并被覆盖,这意味着您无法再访问先前定义的变量。 例如,在给定的代码中,val1, val2和ans在第一组定义之后立即被初始化,然后在第二组定义之后再次被初始化。每个定义之后的代码都可以访问它们,而每个重复定义仅影响在其之下的代码。 以下是一个例子:
let val1 = 5;
let val2 = 2;
let ans = val1 % val2;
println!("{}", ans);
let str1 = String::from("Hello");
let ans = concat_string(str1);
println!("{}", ans);
let ans = "This is a new value of ans";
println!("{}", ans);
在这个例子中,第一个ans存储val1 % val2的计算结果,第二个ans存储concat_string的结果,第三个ans存储一个新的字符串。每次重新定义ans时,先前定义的变量将被覆盖,并且只有一个最新的定义可以访问。在第二个ans定义之前,第一个ans是可见的,但在第二个ans之后,第一个ans已被覆盖并无法再被访问。 因此,编译器不会报错,因为每个新定义将覆盖之前的定义,而且Rust允许这种行为。