Sobes.tech
Junior

Անանուն ֆունկցիաների և սովորականների միջև ինչ տարբերություն կա?

sobes.tech AI

Պատասխան AI-ից

Անանուն ֆունկցիաները ֆունկցիաներ են առանց անունի: Դրանք հաճախ օգտագործվում են մեկանգամյա կանչերի կամ որպես callback:

Հիմնական տարբերությունները՝

  • Անուն: Սովորական ֆունկցիաները ունեն անուն և կարող են կանչվել դրա միջոցով: Անանուն ֆունկցիաները չունեն անուն:
  • Նկարագրություն: Սովորական ֆունկցիաները սահմանվում են func բանալի բառով (կամ համապատասխան այլ լեզուներում) և անունով, որոնցից հետո գալիս են պարամետրերը և մարմինը: Անանուն ֆունկցիաները սահմանվում են "կայուն", հաճախ օգտագործման վայրում:
  • Տարածում: Անանուն ֆունկցիաները հաճախ փոխանցվում են որպես արգումենտներ այլ ֆունկցիաներին (օրինակ, map, where, forEach մեթոդներում): Սովորական ֆունկցիաները նույնպես կարող են փոխանցվել, բայց ավելի հաճախ օգտագործվում են անունով կանչվող տրամաբանությունը սահմանելու համար:
  • Տիրույթ: Անանուն ֆունկցիաները ունեն մուտք դեպի փոփոխականներ այն տիրույթից, որտեղ սահմանվել են ("կապ"-ի ազդեցություն): Սովորական ֆունկցիաները սովորաբար ունեն իրենց սեփական տիրույթը:

Օրինակ Dart/Flutter-ում:

Սովորական ֆունկցիա:

void greet(String name) {
  print('Բարև, $name!');
}

// Սովորական ֆունկցիայի կանչ:
greet('Աշխարհ');

Անանուն ֆունկցիա (լամբդա):

// Օգտագործում անանուն ֆունկցիայի՝ ցուցակի վրա կրկնության ժամանակ
List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) {
  print(number * 2); // Անանուն ֆունկցիա, որը կատարում է բազմապատկում
});

// Անանուն ֆունկցիա, որը վերագրում է փոփոխականին
var multiplyByTwo = (int number) => number * 2;
print(multiplyByTwo(5));