[Dart] Cơ bản về hàm(Function)
1. Kiến thức cơ bản về function trong Dart
a. Định nghĩa function
Trong Dart, function là một khối mã thực thi một nhiệm vụ cụ thể và có thể được gọi lại nhiều lần.
Cú pháp cơ bản:
<kiểu_trả_về> tên_hàm(<danh_sách_tham_số>) {
// Nội dung hàm
return <giá trị_trả_về>;
}
DartVí dụ:
int tinhTong(int a, int b) {
return a + b;
}
}
Dartint
là kiểu trả về.tinhTong
là tên hàm.(int a, int b)
là danh sách tham số.
b. Optional Parameters
- Named Parameters (tham số có tên) dùng dấu
{}
:
void sayHello({String name = 'bạn'}) {
print('Xin chào, $name!');
}
Dart- Positional Parameters (tham số tùy chọn theo thứ tự) dùng
[]
:
void greet(String name, [String? message]) {
print('Hello $name, $message');
}
}
Dartc. Arrow Function
Khi hàm có một dòng mã, bạn có thể dùng =>
:
int tinhBinhPhuong(int x) => x * x;
Dartd. Anonymous Functions (Hàm vô danh)
var numbers = [1, 2, 3];
numbers.forEach((num) {
print(num * 2);
});
Dart2. Kiến thức nâng cao về function trong Dart
a. Higher-Order Function
Hàm có thể:
- Nhận hàm khác làm tham số.
- Trả về một hàm khác.
Ví dụ:
void thucThi(Function ham, int value) {
ham(value);
}
void inGiaTri(int x) {
print('Giá trị: $x');
}
void main() {
thucThi(inGiaTri, 5);
}
Dartb. Closures
Closure là hàm có thể truy cập biến bên ngoài phạm vi của nó:
Function taoHamCong(int a) {
return (int b) => a + b;
}
void main() {
var hamCong5 = taoHamCong(5);
print(hamCong5(3)); // Kết quả: 8
}
Dartc. Generators (Hàm sinh dữ liệu)
Sử dụng từ khóa sync*
hoặc async*
để sinh dữ liệu:
Iterable<int> demNguoc(int n) sync* {
while (n > 0) {
yield n--;
}
}
Dartd. Recursive Function (Hàm đệ quy)
Hàm gọi chính nó để giải quyết bài toán lặp:
int giaiThua(int n) {
if (n <= 1) return 1;
return n * giaiThua(n - 1);
}
Dart