Menu
CoddyTech

'Option' là gì?

Thuộc phần Logic và luồng chương trình trong hành trình Rust của Coddy. Bài học 35 trên 66.

Trong lập trình, bạn thường gặp những trường hợp một giá trị có thể có hoặc không. Ví dụ, khi tìm một phần tử trong danh sách, bạn có thể tìm thấy phần tử đó hoặc phần tử đó có thể không tồn tại. Các ngôn ngữ lập trình truyền thống thường dùng những giá trị đặc biệt như null hoặc -1 để biểu thị “không có gì”, nhưng cách này có thể gây ra bug và sự cố.

Rust chọn một cách tiếp cận khác với kiểu liệt kê Option<T>. Đây là kiểu dữ liệu tích hợp sẵn, biểu thị rõ khả năng không có giá trị. Thay vì đoán xem một giá trị có tồn tại hay không, Rust buộc bạn xử lý trước cả hai trường hợp.

Enum Option có chính xác hai biến thể:

Some(value)  // Chứa một giá trị
None         // Không chứa giá trị

Khi một hàm có thể không trả về giá trị, hàm đó trả về một Option. Nếu có giá trị cần trả về, hàm bọc giá trị đó trong Some. Nếu không có giá trị, hàm trả về None.

Điều này thể hiện rõ khả năng giá trị không tồn tại trong hệ thống kiểu dữ liệu, giúp bạn tránh vô tình sử dụng một giá trị không tồn tại.

Bạn đã thấy Option hoạt động với phương thức .get() của hash map: phương thức này trả về Some(&value) khi khóa tồn tại, hoặc None khi khóa không tồn tại. Mẫu này xuất hiện xuyên suốt Rust, giúp code của bạn an toàn và dễ dự đoán hơn.

Tự làm thử

Bài học này không có thử thách code.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Rust online