Sobes.tech
Junior

Mis vahe on anonüümsetel funktsioonidel ja tavapärastel?

sobes.tech AI

Vastus AI-lt

Anonüümfunktsioonid on funktsioonid ilma nime. Neid kasutatakse sageli ühekordseteks kutsedeks või tagasikutsedena (callback'idena).

Peamised erinevused:

  • Nimi: Tavalistel funktsioonidel on nimi ja neid saab kutsuda selle kaudu. Anonüümsetel funktsioonidel nime ei ole.
  • Määratlus: Tavalised funktsioonid määratletakse võtmesõnaga func (või ekvivalent teistes keeltes) ja nimedega, millele järgneb parameetrid ja keha. Anonüümseid funktsioone määratletakse "kohapeal", sageli nende kasutamise kohas.
  • Edastamine: Anonüümseid funktsioone edastatakse sageli argumentidena teistele funktsioonidele (näiteks meetodites map, where, forEach). Tavalisi funktsioone saab samuti edastada, kuid neid kasutatakse sagedamini loogika määratlemiseks, mida kutsutakse nime järgi.
  • Piirkond: Anonüümfunktsioonidel on juurdepääs nende määratlemise piirkonna muutujatele ("sulgumise" mõju). Tavalistel funktsioonidel on tavaliselt oma piirkond.

Näide Dart/Flutter:

Tavaline funktsioon:

void greet(String name) {
  print('Tere, $name!');
}

// Tavalise funktsiooni kutsumine
greet('Maailm');

Anonüümne funktsioon (lambda):

// Loendi iteratsiooni ajal anonüümse funktsiooni kasutamine
List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) {
  print(number * 2); // Anonüümne funktsioon, mis teeb korrutamise
});

// Anonüümne funktsioon määratud muutujale
var multiplyByTwo = (int number) => number * 2;
print(multiplyByTwo(5));