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