Junior
Kuo skiriasi anoniminės funkcijos nuo įprastų?
sobes.tech AI
Atsakymas iš AI
Anoniminės funkcijos yra funkcijos be vardo. Jos dažnai naudojamos vienkartiniams iškvietimams arba kaip atgaliniai kvietimai (callback'ai).
Pagrindiniai skirtumai:
- Vardas: Įprastos funkcijos turi vardą ir gali būti iškviečiamos pagal jį. Anoniminės funkcijos neturi vardo.
- Apibrėžimas: Įprastos funkcijos apibrėžiamos naudojant raktinį žodį
func(arba ekvivalentą kituose kalbose) ir vardą, po kurio seka parametrai ir kūnas. Anoniminės funkcijos apibrėžiamos "vietoje", dažnai jų naudojimo vietoje. - Paveldėjimas: Anoniminės funkcijos dažnai perduodamos kaip argumentai kitoms funkcijoms (pavyzdžiui,
map,where,forEach). Įprastos funkcijos taip pat gali būti perduodamos, tačiau dažniau naudojamos logikai apibrėžti, kuri kviečiama pagal vardą. - Apimtis: Anoniminės funkcijos turi prieigą prie kintamųjų iš apimties, kurioje jos buvo apibrėžtos ("užrakto" efektas). Įprastos funkcijos dažniausiai turi savo apimtį.
Pavyzdys Dart/Flutter:
Įprasta funkcija:
void greet(String name) {
print('Labas, $name!');
}
// Įprastos funkcijos kvietimas
greet('Pasaulis');
Anoniminė funkcija (lambda):
// Naudojimas anoniminės funkcijos iteruojant sąrašą
List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) {
print(number * 2); // Anoniminė funkcija, atliekanti daugybą
});
// Anoniminė funkcija priskirta kintamajam
var multiplyByTwo = (int number) => number * 2;
print(multiplyByTwo(5));