rustlings 学习笔记 -- exercises/01_variables

14 阅读3分钟

exercises/01_variables

variables1.rs - 变量声明与初始化

问题代码

fn main() {
    // TODO: Add the missing keyword.
    x = 5;

    println!("x has the value {x}");
}

解题要点

  • 错误原因: 缺少 let 关键字声明变量,Rust 中变量使用前必须先声明
  • 解决方法: 使用 let x = 5; 声明并初始化变量

正确写法

fn main() {
    let x = 5;
    println!("x has the value {x}");
}

variables2.rs - 变量使用前必须初始化

问题代码

fn main() {
    let x;

    if x == 10 {
        println!("x is ten!");
    } else {
        println!("x is not ten!");
    }
}

解题要点

  • 错误: 变量未初始化就使用
  • 解决: 给变量赋初值 let x = 10;

正确写法

fn main() {
    let x = 10; // 或者其他任意值

    if x == 10 {
        println!("x is ten!");
    } else {
        println!("x is not ten!");
    }
}

variables3.rs - 类型注解与未初始化变量

问题代码

fn main() {
    let x: i32;

    println!("Number {x}");
}

解题要点

  • 错误: 有类型注解但未初始化
  • 解决: 类型注解同时初始化 let x: i32 = 42;

正确写法

fn main() {
    let x: i32 = 42;
    println!("Number {x}");
}

variables4.rs - 变量不可变性

问题代码

fn main() {
    let x = 3;
    println!("Number {x}");

    x = 5; // Don't change this line
    println!("Number {x}");
}

解题要点

  • 错误: 尝试修改不可变变量
  • 解决: 使用 mut 关键字声明可变变量 let mut x = 3;

正确写法

fn main() {
    let mut x = 3;
    println!("Number {x}");

    x = 5; // Don't change this line
    println!("Number {x}");
}

variables5.rs - 变量遮蔽

问题代码

fn main() {
    let number = "T-H-R-E-E"; // Don't change this line
    println!("Spell a number: {number}");

    // TODO: Fix the compiler error by changing the line below without renaming the variable.
    number = 3;
    println!("Number plus two is: {}", number + 2);
}

解题要点

  • 错误: 尝试修改不可变变量且改变类型
  • 解决: 使用变量遮蔽 let number = 3;

正确写法

fn main() {
    let number = "T-H-R-E-E"; // Don't change this line
    println!("Spell a number: {number}");

    let number = 3; // 遮蔽前一个变量
    println!("Number plus two is: {}", number + 2);
}

variables6.rs - 常量声明

问题代码

// TODO: Change the line below to fix the compiler error.
const NUMBER = 3;

fn main() {
    println!("Number: {NUMBER}");
}

解题要点

  • 错误: 常量缺少类型注解
  • 解决: 为常量添加类型注解 const NUMBER: i32 = 3;

正确写法

const NUMBER: i32 = 3;

fn main() {
    println!("Number: {NUMBER}");
}

知识点汇总

变量基础

  • 变量声明: 使用 let 关键字声明变量,如 let x = 5;
  • 变量初始化: Rust 中变量使用前必须初始化,禁止使用未初始化变量
  • 类型注解: 使用 let x: i32 = 42; 显式指定变量类型,帮助编译器推断

变量特性

  • 变量不可变性: 变量默认不可变,使用 mut 关键字声明可变变量 let mut x = 3;
  • 变量遮蔽: 使用相同变量名声明新变量,可以改变类型 let number = 3;
  • 作用域: 新变量在新的作用域中生效,遮蔽之前的同名变量

常量

  • 常量声明: 使用 const 声明常量,如 const NUMBER: i32 = 3;
  • 常量特性: 必须指定类型,编译时确定值,永远不能修改
  • 命名约定: 通常使用全大写字母和下划线