blog.dopana

Back

Bài thứ hai trong loạt Rust cơ bản. Rust đặt sự cẩn thận hiếm có vào cách bạn khai báo và dùng biến — các quy tắc ở đây chính là nền tảng cho sự an toàn của nó.

Biến bất biến theo mặc định#

let name = "Ada";
name = "Grace";   // lỗi: không thể gán hai lần cho biến bất biến
rust

Điều này có chủ đích: dữ liệu bất biến dễ suy luận và an toàn để chia sẻ. Dùng mut để biến thành khả biến:

let mut score = 10;
score += 5;
rust

Chỉ dùng mut khi thực sự cần.

Suy luận kiểu#

Rust tự suy luận kiểu, nhưng bạn có thể khai báo tường minh:

let count: u32 = 42;
let ratio: f64 = 3.14;
let name: &str = "Rust";
let done: bool = true;
rust

Kiểu vô hướng#

KiểuGiá trị
Số nguyêni8..i128, u8..u128 (có dấu/không dấu)
Số thựcf32, f64
Booleanbool
Ký tựchar (Unicode, 4 byte)

Kiểu số nguyên mặc định là i32; số thực mặc định là f64:

let x = 5;       // i32
let y = 2.5;     // f64
rust

Kiểu tổ hợp#

Tuple gộp nhiều giá trị thuộc kiểu bất kỳ:

let point = (3, 5);
let (x, y) = point;   // destructuring
println!("{}", point.0);   // 3
rust

Array chứa nhiều giá trị cùng kiểu với độ dài cố định:

let primes = [2, 3, 5, 7, 11];
println!("{}", primes[0]);   // 2
rust

Hằng số#

Giá trị const luôn bất biến và phải có kiểu đã biết:

const MAX_SPEED: u32 = 120;
rust

Khác với let, const khai báo được ở mọi phạm vi và được nhúng vào lúc biên dịch.

Shadowing#

Bạn có thể dùng lại tên biến để biến đổi giá trị, giữ giá trị cũ cho đến khi giá trị mới có hiệu lực:

let x = 5;
let x = x + 1;
rust

Shadowing cũng cho phép đổi kiểu:

let label = "12";      // &str
let label = label.len();   // usize
rust

Kết luận#

Quy tắc biến của Rust — bất biến theo mặc định, mut tường minh, shadowing — làm cho luồng dữ liệu dự đoán được. Bài tiếp theo trong loạt: luồng điều khiển.

Tài liệu tham khảo#