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));