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