Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

let mut

本集目標

了解 Rust 的變數預設不可變,要用 mut 才能改值。

正文

今天來聊 Rust 一個很有特色的設計——變數預設不可變

先看看會怎樣

fn main() {
    let x = 5;
    x = 10;
    println!("{}", x);
}

你覺得會印出 10 嗎?不會。你會得到一個編譯錯誤。Rust 在跟你說:「x 是不可變的,你不能再給它新的值。」

等等,為什麼不行?

在很多程式語言裡,變數就是可以隨便改的。但 Rust 的態度是:如果你不打算改它,就別讓它可以被改

為什麼?因為如果你知道一個值不會變,你在讀程式的時候就不用擔心它被偷改了。這在大型程式裡很重要。

要改的話,加 mut

如果你確實需要改變值,加上 mut(mutable 的縮寫,意思是「可變的」):

fn main() {
    let mut x = 5;
    println!("x 原本是 {}", x);
    x = 10;
    println!("x 現在是 {}", x);
}

這次就沒問題了!因為你用 let mut 告訴 Rust:「這個變數我之後會改。」

小整理

fn main() {
    let x = 5;     // 不可變,之後不能改
    let mut x = 5; // 可變,之後可以改
}

Rust 不是不讓你改變數,它只是要你明確說出來。這是 Rust 的一個設計哲學:有意識地做出選擇

重點整理

  • Rust 的變數預設是不可變的,不能重新賦值
  • 要讓變數可以改值,宣告時加上 mutlet mut x = 5;
  • 修改可變變數的值:直接用 x = 新值;(不需要再寫 let
  • 這是 Rust 的設計哲學:要你明確選擇,而不是默默允許修改