Rust_learn_1

变量与可变性

变量

声明变量使用let关键字,在默认情况下,变量是不可变的(Immutable)

image-20240806172626179

为此解决该问题,声明变量时在前面加上 mut,就可以使变量可变

image-20240806172643913

常量

常量(constant),在绑定值之后也是不可变的,但是与不可变的变量有很多区别:

  • 不可以使用mut,常量永远是不变的

  • 声明常量用const关键字,类型必须被标注

    image-20240806172808852

    image-20240806172830448

  • 常量可以在任何作用域中声明,包括全局作用域

  • 常量只可以绑定到常量表达式,无法绑定到函数的调用结果或只能在运行时才能计算出的值

在程序运行期间。常量在其声明的作用域内一直有效

shadowing(隐藏)

可以使用相同的名字声明新的变量,新的变量就会隐藏之前声明的同名变量,在后续代码中这个变量名表示的是新的变量

shadow 和把变量标记为mut是不同的:

  • 如果不使用let关键字,重新给非mut的变量赋值会导致编译时错误(就是上面所说的变量是不可变的)
  • 而使用let声明的同名新变量,也是不可变的
  • 使用let声明的同名新变量,它的类型可以与之前不同
let  _kk=1;
println!("{}",_kk);
let _kk = 2;
println!("{}",_kk);

let _xx = "123";
print_type_of(&_xx);  //&str
let _xx = _xx.len();
print_type_of(&_xx); //usize
posted @ 2024-08-06 17:42  solutide  阅读(3)  评论(0编辑  收藏  举报