func makeIncrementer(forIncrement amount: Int) -> () -> Int {
var runningTotal = 0
func incrementer() -> Int {
runningTotal += amount
return runningTotal
}
return incrementer
}
func makeIncrementer(forIncrement amount: Int) -> () -> Int {
let runningTotal = 0
let incrementer = { [runningTotal, amount] in
let result = runningTotal + amount
return result
}
return incrementer
}
class SomeClass {
var someClosure: () -> Void
var someVariable = 0
init() {
self.someClosure = {}
self.someClosure = someFunction
print("init")
}
func someFunction() {
someVariable -= 1
}
deinit {
print("deinit")
}
}
var someClass: SomeClass? = SomeClass()
someClass = nil

class SomeClass {
var someClosure: () -> Void
var someVariable = 0
init() {
self.someClosure = {
someVariable += 1
}
print("init")
}
deinit {
print("deinit")
}
}
var someClass: SomeClass? = SomeClass()
someClass = nil

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/closures