Ecco un semplice esempio, volutamente semplificato:
// A list of numbers
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// Functional programming in Dart
var evenSquares = numbers
.where((n) => n % 2 == 0) // Filter: Keep only even numbers
.map((n) => n * n) // Transform: Square each number
.toList(); // Convert the result to a list
// Output the result
print("Even squares:");
evenSquares.forEach(print);
// Aggregate: Sum of even squares
int sum = evenSquares.reduce((a, b) => a + b);
print("Sum of even squares: $sum");
Nell'esempio sono concentrate varie funzioni tra quelle che si possono applicare a una collezione di dati (nel caso specifico, numeri):
Un altro esempio, un po' più elaborato, che coinvolge una mappa, cioè un insieme di coppie chiave-valore:
// A map of names and ages
Map<String, int> people = {
"Alice": 25,
"Bob": 30,
"Charlie": 35,
"Diana": 40,
"Eve": 22
};
// Filter: Keep only people older than 30
var filteredPeople = people.entries
.where((entry) => entry.value > 30)
.toList();
// Transform: Create a list of strings describing the filtered people
var descriptions = filteredPeople
.map((entry) => "${entry.key} is ${entry.value} years old")
.toList();
// Output the descriptions
print("Filtered people:");
descriptions.forEach(print);
// Aggregate: Calculate the average age of the filtered people
if (filteredPeople.isNotEmpty) {
double averageAge = filteredPeople
.map((entry) => entry.value)
.reduce((a, b) => a + b) / filteredPeople.length;
print("Average age of filtered people: $averageAge");
} else {
print("No people older than 30.");
}
Giorgio Barchiesi
Albo degli Ingegneri Sez. A, N. 4027 della Prov. di Trento
P.IVA 02370260222, C.F. BRC GRG 58L26 C794R
Copyright © 2015-2024 Giorgio Barchiesi - Tutti i diritti riservati