Nested Function

A function defined at the top layer of a source file is called a global function. A function defined in a function body is called a nested function.

In the following example, the nested function nestAdd is defined in the foo function, and therefore nestAdd can be called inside foo, or it can be returned as a return value and called outside foo:

func foo() {
    func nestAdd(a: Int64, b: Int64) {
        a + b + 3
    }

    println(nestAdd(1, 2))  // 6

    return nestAdd
}

main() {
    let f = foo()
    let x = f(1, 2)
    println("result: ${x}")
}

The result is as follows:

6
result: 6