Sobes.tech
Junior — Middle

Selgitage sulgemise ja funktsiooni vahet programmeerimises.

sobes.tech AI

Vastus AI-lt

Funktsioon on koodilõik, mis täidab kindlat ülesannet ning võib vastu võtta parameetreid ja tagastada tulemuse.

Lukustus (closure) on funktsioon, mis haarab ja säilitab juurdepääsu välise ulatuse muutujatele, isegi pärast selle välise funktsiooni lõppemist.

Näide Swiftis:

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

Siin on incrementer lukustus, mis säilitab total oleku vahemikus kutsed, isegi pärast makeIncrementer lõppemist. Tavaline funktsioon ei oma sellist käitumist.