Junior — Middle
Εξηγήστε τη διαφορά μεταξύ ενός κλεισίματος και μιας λειτουργίας στον προγραμματισμό.
sobes.tech AI
Απάντηση από AI
Μια λειτουργία είναι ένα μπλοκ κώδικα που εκτελεί μια συγκεκριμένη εργασία και μπορεί να δέχεται παραμέτρους και να επιστρέφει αποτέλεσμα.
Ένα κλείσιμο (closure) είναι μια λειτουργία που αιχμαλωτίζει και διατηρεί την πρόσβαση σε μεταβλητές από το εξωτερικό πεδίο ορατότητας, ακόμα και μετά την ολοκλήρωση αυτής της εξωτερικής λειτουργίας.
Παράδειγμα σε Swift:
func makeIncrementer(amount: Int) -> () -> Int {
var total = 0
let incrementer: () -> Int = {
total += amount
return total
}
return incrementer
}
let incrementByTen = makeIncrementer(amount: 10)
print(incrementByTen()) // 10
print(incrementByTen()) // 20
Εδώ, το incrementer είναι ένα κλείσιμο που διατηρεί την κατάσταση του total μεταξύ των κλήσεων, ακόμα και αφού η makeIncrementer έχει ολοκληρωθεί. Μια κανονική λειτουργία δεν έχει αυτή τη συμπεριφορά.