If a function exists inside the body of another function, it's called nested function.
func funcname() { //statements of outer function func anotherFuncname() { //statements of inner function } }
Here, the function anotherFuncname
is inside the body of another function funcname
.
It should be noted that, inner functions can be only called and used inside the enclosing function (outer function).
func outputMessageByGreeting(_ message: String) {
func addGreetingAndPrint() {
print("Hello! \(message)")
}
addGreetingAndPrint()
}
outputMessageByGreeting("Jack")
When you run the program, the output will be:
Hello! Jack
In the above program, the nested function addGreetingAndPrint()
is being called from the enclosing function outputMessageByGreeting()
.
The statement outputMessageByGreeting("Jack")
calls the outer function. And the statement addGreetingAndPrint()
inside the outer function calls the method which outputs Hello! Jack in the console.
You cannot call the function addGreetingAndPrint
outside of the function outputMessageByGreeting
.
Nested functions can contain functions with parameters and return values.
func operate(with symbol:String) -> (Int, Int) -> Int {
func add(num1:Int, num2:Int) -> Int {
return num1 + num2
}
func subtract(num1:Int, num2:Int) -> Int {
return num1 - num2
}
let operation = (symbol == "+") ? add : subtract
return operation
}
let operation = operate(with: "+")
let result = operation(2, 3)
print(result)
When you run the program, the output will be:
5
In the above program,
operate()
, with return value of type Function (Int,Int) -> Int
.add()
and subtract()
.The nested function add()
and subtract()
in a way are being used outside of the enclosing function operate()
. This is possible because the outer function returns one of these functions.
We've used the inner function outside the enclosing function operate()
as operation(2, 3)
. The program internally calls add(2, 3)
which outputs 5 in the console.
It takes a lot of effort and cost to maintain Programiz. We would be grateful if you support us by either:
Disabling AdBlock on Programiz. We do not use intrusive ads.
or
Donate on Paypal