Sobes.tech
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));