Junior
Ποια είναι η διαφορά μεταξύ ανώνυμων συναρτήσεων και συνηθισμένων;
sobes.tech AI
Απάντηση από AI
Οι ανώνυμες συναρτήσεις είναι συναρτήσεις χωρίς όνομα. Χρησιμοποιούνται συχνά για μονοχρησιμοποιημένες κλήσεις ή ως callbacks.
Βασικές διαφορές:
- Όνομα: Οι κανονικές συναρτήσεις έχουν όνομα και μπορούν να καλούνται με αυτό. Οι ανώνυμες συναρτήσεις δεν έχουν όνομα.
- Ορισμός: Οι κανονικές συναρτήσεις ορίζονται με τη λέξη-κλειδί
func(ή το αντίστοιχο σε άλλες γλώσσες) και ένα όνομα, ακολουθούμενο από παραμέτρους και σώμα. Οι ανώνυμες συναρτήσεις ορίζονται "στη στιγμή", συχνά στο σημείο χρήσης τους. - Μεταβίβαση: Οι ανώνυμες συναρτήσεις συχνά μεταβιβάζονται ως ορίσματα σε άλλες συναρτήσεις (π.χ., στις μεθόδους
map,where,forEach). Οι κανονικές συναρτήσεις μπορούν επίσης να μεταβιβαστούν, αλλά χρησιμοποιούνται περισσότερο για τον ορισμό λογικής που καλείται με όνομα. - Περιοχή ορατότητας: Οι ανώνυμες συναρτήσεις έχουν πρόσβαση σε μεταβλητές από την περιοχή όπου ορίστηκαν (αποτέλεσμα "καταγραφής" κλεισίματος). Οι κανονικές συναρτήσεις έχουν συνήθως τη δική τους περιοχή.
Παράδειγμα σε Dart/Flutter:
Κανονική συνάρτηση:
void greet(String name) {
print('Γειά σου, $name!');
}
// Κλήση κανονικής συνάρτησης
greet('Κόσμε');
Ανώνυμη συνάρτηση (lambda):
// Χρήση ανώνυμης συνάρτησης κατά την επανάληψη σε λίστα
List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) {
print(number * 2); // Ανώνυμη συνάρτηση που πολλαπλασιάζει
});
// Ανώνυμη συνάρτηση που ανατίθεται σε μεταβλητή
var multiplyByTwo = (int number) => number * 2;
print(multiplyByTwo(5));