Rust 入门 变量与可变性

变量与可变性

  • 变量的声明使用let关键字
  • 默认情况下变量是不可以被重新赋值的
  • 举个栗子
fn main() {
    let x = 5;
    println!("x={}", x);
    
    x = 6; // 如果我们对一个不可变得变量进行再次赋值的操作 编译器会抛出一个异常
//  ^^^^^^ cannot assign twice to tmmutable variable
    println!("x={}", x);
}
  • 在声明变量时, 在变量前加上mut关键字, 就使得变量可以被重新赋值
  • 举个栗子
fn main() {
    let mut x = 5;
    println!("x={}", x);
    
    x = 6;
    println!("x={}", x);
}
// > cargo run
// x=5
// x=6

变量与常量

  • 常量 (constant) 在绑定值以后也是不可变的

  • 常量与不可变的变量有很大的区别

    • 常量不可以使用mut关键字
    • 常量永远都是不可变的
    • 声明常量必须使用const 关键字
    • 声明常量必须提供类型签名
    • 常量可以在任何作作用域内声明, 包括全局作用域
    • 常量只能绑定到常量表达式中
  • 在程序运行期间, 常量在其声明的作用域内一直有效

  • 命名规范: Rust 里的常量使用全大写字母, 每个单词之间用下划线分隔开

  • 举个栗子

const MAX_POINTS: u32 = 100000;

fn main() {
    const MIN_POINTS: u32 = 1;
}

变量与隐藏

  • 在 Rust 程序中可以使用相同的标识符来声明新的变量, 这时之前声明的变量会被隐藏(shadow)

  • 在后续的代码中, 这个标识符所代表的就是新声明的这个变量

  • 这样做有个好处, 我们用栗子说明

// 例 1
fn main() {
    let x = 5;
    x = x + 1;
} // 编译出错: cannot assign twice to tmmutable variable

// 例 2
fn main() {
    let x = 5;
    let x = x + 1;
} // 编译通过  x 的结果为 6
  • 隐藏/遮盖mut 是不一样的
    • 如果不使用let关键字, 呢么重新给非mut的变量重新赋值就会导致编译时错误
    • 使用let声明的同名变量, 它的类型可以与之前的不同
  • 举个栗子
fn main() {
    let hello = "hello"; // &str 类型
    let hello = hello.len(); // usize 类型
}
如果对我分享的内容感兴趣的话  记得关注我得动态
求推荐  求收藏  求转发  求关注
posted @ 2021-02-01 20:10  Delayer  阅读(122)  评论(0)    收藏  举报