Title here
Summary here
Swift supports anonymous functions, which can form closures. Anonymous functions are useful when you want to define a function inline without having to name it.
import Foundation
// This function `intSeq` returns another function, which
// we define anonymously in the body of `intSeq`. The
// returned function captures the variable `i` to
// form a closure.
func intSeq() -> () -> Int {
var i = 0
return {
i += 1
return i
}
}
// In the main part of our program:
// We call `intSeq`, assigning the result (a function)
// to `nextInt`. This function value captures its
// own `i` value, which will be updated each time
// we call `nextInt`.
let nextInt = intSeq()
// See the effect of the closure by calling `nextInt`
// a few times.
print(nextInt())
print(nextInt())
print(nextInt())
// To confirm that the state is unique to that
// particular function, create and test a new one.
let newInts = intSeq()
print(newInts())
To run the program, save it as a .swift
file and use the Swift compiler:
$ swift closures.swift
1
2
3
1
The last feature of functions we’ll look at for now is recursion.