生锈的不变性让绑定

时间:2017-12-27 00:43:18

标签: rust immutability let

我认为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

2 个答案:

答案 0 :(得分:1)

您的代码或多或少与此相同:

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后,第一个let url = "https://google.com"; return browser.executeScript("return window.open(arguments[0], '_blank')", url); 将无法访问。

答案 1 :(得分:0)

a正在shadowed

let a = 5;
a = 6; // not allowed

let a = 5;
let a = 6; //allowed

在类似的块中执行此操作的错误形式。