我认为let
应该是一个不可变的绑定。为什么正确的代码可以正常工作? (两次分配a
)
let a = [1, 2, 3, 4, 5];
println! ("{:?}", a);
let (a, b, c) = (1,2,3);
println! ("{:?}", a);
println! ("{:?}", b);
println! ("{:?}", c);
货运的结果是:
Guess the number! From a 1 - 100 inclusive
[1, 2, 3, 4, 5]
1
2
3
您的代码或多或少等同于此:
let first_a = [1, 2, 3, 4, 5];
println! ("{:?}", first_a);
let (second_a, b, c) = (1,2,3);
println! ("{:?}", second_a);
println! ("{:?}", b);
println! ("{:?}", c);
第二个a
是一个全新的变量。一旦你创建第二个a
,就不再可以访问它了。
a
正在加入shadowed。
let a = 5;
a = 6; // not allowed
let a = 5;
let a = 6; //allowed
在这样的同一个块中执行此操作的错误形式。