| Làm Chủ Hàm Nâng Cao, Arrow Syntax Và Lexical Closures Trong Ngôn Ngữ Dart

Được viết bởi thanhdt vào ngày 01/06/2026 lúc 19:55 | 9 lượt xem

Hàm (Functions) trong ngôn ngữ Dart được coi là First-class objects, nghĩa là hàm có thể được gán vào biến, truyền làm tham số, hoặc trả về từ một hàm khác.

1. Các kiểu khai báo hàm hiện đại

  • Arrow Syntax (Cú pháp mũi tên =>): Viết tắt cực nhanh cho các hàm chỉ chứa duy nhất một dòng lệnh trả về giá trị: double calculateTax(double price) => price * 0.1;.
  • Anonymous Functions (Hàm ẩn danh/Lambda): Hàm không có tên thường dùng làm tham số cho các bộ lọc danh sách: list.forEach((item) => print(item));.

2. Higher-Order Functions (Hàm bậc cao)

Hàm bậc cao là hàm nhận một hàm khác làm tham số hoặc trả về một hàm. Điều này mở ra sức mạnh lập trình hàm (Functional Programming) cực đỉnh:
* map(): Biến đổi danh sách phần tử.
* where(): Lọc phần tử theo điều kiện.

3. Khái niệm Lexical Closures chuyên sâu

Closure là một đối tượng hàm có quyền truy cập vào các biến trong phạm vi từ vựng (lexical scope) của nó, ngay cả khi hàm đó được gọi bên ngoài phạm vi ban đầu của nó.