🔧 Hàm: Đóng Gói Code Có Thể Tái Sử Dụng
Mục Tiêu Bài Học
Sau bài này, bạn sẽ:
- ✅ Biết cách định nghĩa functions với
fn - ✅ Hiểu parameters và return values
- ✅ Phân biệt expressions và statements
- ✅ Viết functions rõ ràng và dễ tái sử dụng
🤔 Tại Sao Cần Functions?
Giả sử bạn cần tính diện tích hình chữ nhật nhiều lần:
fn main() {
// Tính diện tích lần 1
let width1 = 10;
let height1 = 20;
let area1 = width1 * height1;
println!("Diện tích 1: {}", area1);
// Tính diện tích lần 2
let width2 = 15;
let height2 = 25;
let area2 = width2 * height2;
println!("Diện tích 2: {}", area2);
// ❌ Lặp code quá nhiều!
}
Vấn đề:
- ❌ Code lặp lại (DRY - Don't Repeat Yourself)
- ❌ Khó bảo trì (sửa 1 chỗ phải sửa nhiều chỗ)
- ❌ Dễ mắc lỗi
Giải pháp: Dùng Function! 🎯
📝 Function Là Gì?
Function (hàm) là một khối code có tên có thể:
- Nhận đầu vào (parameters)
- Xử lý logic
- Trả về kết quả (return value)
- Tái sử dụng nhiều lần
Ẩn Dụ
Hãy tưởng tượng function như một máy móc trên công trường:
🏗️ Máy trộn bê tông:
- Input: Xi măng, cát, nước
- Xử lý: Trộn đều các nguyên liệu
- Output: Bê tông sẵn sàng
Đặc điểm:
- Có tên rõ ràng: "Máy trộn bê tông"
- Tái sử dụng nhiều lần (không cần xây lại)
- Đồ bảo hộ an toàn (Rust): Kiểm tra input/output! 🛡️
📝 Định Nghĩa Function
Cú Pháp
fn tên_function(tham_số: kiểu) -> kiểu_trả_về {
// Code của function
giá_trị_trả_về // Không có dấu ;
}
Ví Dụ Đơn Giản
fn chao_hoi() {
println!("Xin chào!");
}
fn main() {
chao_hoi(); // Gọi function
chao_hoi(); // Gọi lại
}
Kết quả:
Xin chào!
Xin chào!
Giải thích:
fn chao_hoi()→ Định nghĩa function tênchao_hoichao_hoi();→ Gọi (call) function