Skip to content

第 2 天常见编程概念

变量

在 Rust 中使用 let 关键字声明变量,变量默认是不可变(immutable)的。

let 声明变量不需要指定变量的类型,但这并不意味着变量没有类型,编译器会自动根据变量的值推断出变量的类型。你也可以显式指定变量的类型。

rust
fn main() {
    let x = 5;
    println!("The value of x is: {}", x);
    x = 6; // error: cannot assign twice to immutable variable `x`
}

如果想要变量可变,可以在变量前面加上 mut 关键字。

rust
fn main() {
    let mut x = 5;
    println!("The value of x is: {}", x);
    x = 6;
    println!("The value of x is: {}", x);
}

Rust 这样设计的原因是,不可变变量更容易推理和理解,而且在编译时可以检查出很多错误。

常量

使用 const 关键字声明常量,常量必须指定类型。常量不同于变量,常量一旦声明就不能改变。不能对常量使用 mut 关键字。

常量可以在任何作用域中声明,包括全局作用域。常量的值只能被设为常量表达式,而不能是运行时才能计算的值。因为编译器是在编译时计算常量表达式的值。

常量名推荐使用大写字母和下划线分隔。

rust
const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;

隐藏

在 Rust 中,可以定义同名的变量,后面的变量会隐藏前面的变量。隐藏只在当前作用域有效。

rust
fn main() {
    let x = 5;

    let x = x + 1;

    {
        let x = x * 2;
        println!("The value of x in the inner scope is: {x}");
    }

    println!("The value of x is: {x}");
}

// 结果为:
// The value of x in the inner scope is: 12
// The value of x is: 6

为什么需要隐藏?隐藏可以让我们在不改变变量名的情况下,对变量进行修改。避免取名的烦恼。

数据类型

Rust 是一种静态类型语言,编译器在编译时就知道每个值的类型。Rust 的数据类型分为两类:标量(scalar)和复合(compound)。

编译器通常会自动推断变量的类型,当变量的类型有多种可能时,必须增加类型注解。

rust
let guess: u32 = "42".parse().expect("Not a number!");

标量类型

最近更新于:

Released under the MIT License