Higher-Order Functions in Dart

Higher-Order Functions in Dart

Higher-Order Functions in Dart

A Higher-Order Function is a function that either:

  • Takes another function as a parameter.
  • Returns a function.

These functions help make code more concise and reusable.

1. Passing a Function as a Parameter

You can pass a function as an argument to another function.

void greet(String name, Function message) {
  print("Hello, $name!");
  message();
}

void sayGoodMorning() {
  print("Good morning! Have a great day.");
}

void main() {
  greet("Alice", sayGoodMorning);
}
    

Output:

Hello, Alice!
Good morning! Have a great day.
    

2. Returning a Function

A function can also return another function.

Function multiplier(int n) {
  return (int x) => x * n;
}

void main() {
  var doubleIt = multiplier(2);  // Returns a function that multiplies by 2
  print(doubleIt(5)); // Output: 10
}
    

3. Using Anonymous Functions (Lambda)

Dart allows passing anonymous functions instead of named functions.

void main() {
  List numbers = [1, 2, 3, 4, 5];

  numbers.forEach((num) {
    print(num * 2);
  });
}
    

Output:

2
4
6
8
10
    

4. Using map, where, reduce, and fold

Dart provides built-in higher-order functions like map, where, reduce, and fold.

Example: Using map to Transform a List

void main() {
  List numbers = [1, 2, 3, 4];
  var squaredNumbers = numbers.map((n) => n * n).toList();
  print(squaredNumbers); // Output: [1, 4, 9, 16]
}
    

Example: Using where to Filter a List

void main() {
  List numbers = [10, 15, 20, 25, 30];
  var evenNumbers = numbers.where((n) => n % 2 == 0).toList();
  print(evenNumbers); // Output: [10, 20, 30]
}
    

Key Benefits of Higher-Order Functions

  • Code Reusability – Functions can be reused dynamically.
  • Conciseness – Reduces boilerplate code.
  • Flexibility – Enables functional programming techniques.

Higher-order functions make Dart more powerful and expressive! 🚀

Comments

Popular Posts