[Dart] Cơ bản về hàm(Function)

[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ề>;
}
Dart

Ví dụ:

int tinhTong(int a, int b) {
    return a + b;
  }
}
Dart
  • int 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');
  }
}
Dart

c. Arrow Function

Khi hàm có một dòng mã, bạn có thể dùng =>:

int tinhBinhPhuong(int x) => x * x;
Dart

d. Anonymous Functions (Hàm vô danh)

var numbers = [1, 2, 3];
numbers.forEach((num) {
  print(num * 2);
});
Dart

2. Kiến thức nâng cao về function trong Dart

a. Higher-Order Function

Hàm có thể:

  1. Nhận hàm khác làm tham số.
  2. 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);
}
Dart

b. 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
}
Dart

c. 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--;
  }
}
Dart

d. 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

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *