Funzioni anonime
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 44 di 65.
Finora hai creato funzioni con nomi come calculateTotal o printMessage. Ma a volte ti serve una semplice funzione per un'unica attività specifica e darle un nome sembra superfluo. È qui che le funzioni anonime tornano utili.
Una funzione anonima è una funzione senza nome. La definisci proprio dove ti serve, rendendo il codice più conciso per operazioni brevi e da eseguire una sola volta. La sintassi è semplice: basta scrivere l’elenco dei parametri seguito dal corpo della funzione:
(parameter) {
// corpo della funzione
}Le funzioni anonime sono particolarmente utili con i metodi delle liste. Per esempio, invece di creare una funzione con nome separata per stampare ogni elemento di una lista, puoi usare direttamente una funzione anonima con il metodo forEach:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});Questo approccio mantiene il tuo codice pulito e conciso, soprattutto quando la logica della funzione è semplice e non verrà riutilizzata altrove nel programma.
Sfida
FacileCrea un programma che elabori un elenco di nomi di dipendenti usando funzioni anonime. Il tuo programma mostrerà come usare funzioni anonime con il metodo forEach per eseguire diverse operazioni su ciascun elemento dell’elenco.
- Leggi una stringa di input contenente nomi di dipendenti separati da virgole (ad es.,
"Alice,Bob,Charlie,Diana") - Suddividi la stringa di input in un elenco di singoli nomi usando il metodo
split() - Usa il metodo
forEachcon una funzione anonima per stampare il nome di ciascun dipendente con un messaggio di benvenuto - Usa il metodo
forEachcon un’altra funzione anonima per stampare il nome di ciascun dipendente in maiuscolo - Usa il metodo
forEachcon una terza funzione anonima per stampare il nome di ciascun dipendente insieme al conteggio dei suoi caratteri
Ad esempio, se l’input è "Alice,Bob,Charlie", il programma dovrebbe produrre:
Processing employee list: Alice,Bob,Charlie
===========================================
Welcome Messages:
Welcome to the team, Alice!
Welcome to the team, Bob!
Welcome to the team, Charlie!
===========================================
Names in Uppercase:
ALICE
BOB
CHARLIE
===========================================
Name Lengths:
Alice has 5 characters
Bob has 3 characters
Charlie has 7 charactersSe l’input è "John,Sarah", il programma dovrebbe produrre:
Processing employee list: John,Sarah
===========================================
Welcome Messages:
Welcome to the team, John!
Welcome to the team, Sarah!
===========================================
Names in Uppercase:
JOHN
SARAH
===========================================
Name Lengths:
John has 4 characters
Sarah has 5 charactersIl programma deve usare tre chiamate separate al metodo forEach, ciascuna con una propria funzione anonima. Le funzioni anonime devono essere definite inline, senza assegnare loro un nome. Ogni funzione anonima deve accettare un singolo parametro che rappresenta il nome del dipendente corrente ed eseguire l’operazione specificata. Usa l’interpolazione di stringhe per formattare i messaggi di output esattamente come mostrato sopra.
Provalo tu
import 'dart:io';
void main() {
// Leggi la stringa di input contenente i nomi dei dipendenti
String? input = stdin.readLineSync();
// Dividi l'input in una lista di nomi
List<String> employeeNames = input!.split(',');
// Stampa il messaggio iniziale di elaborazione
print('Processing employee list: $input');
print('===========================================');
// TODO: Scrivi il tuo codice qui sotto
// Usa forEach con funzioni anonime per:
// 1. Stampare messaggi di benvenuto
// 2. Stampare i nomi in maiuscolo
// 3. Stampare la lunghezza dei nomi
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online