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() { Listnumbers = [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() { Listnumbers = [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() { Listnumbers = [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
Post a Comment