A nested function is a function defined inside another function. It can only be used within the outer function where it is declared.
Click to reveal answer
beginner
Why use nested functions in Swift?
Nested functions help organize code by grouping related tasks together. They also can access variables from the outer function, making code cleaner and easier to read.
Click to reveal answer
intermediate
Can a nested function access variables from its outer function in Swift?
Yes, a nested function can use and modify variables declared in its outer function because it shares the same scope.
Click to reveal answer
beginner
Example of a nested function in Swift:
func greet() {
func sayHello() {
print("Hello!")
}
sayHello()
}
Here, sayHello() is nested inside greet() and can only be called within greet().
Click to reveal answer
intermediate
What happens if you try to call a nested function from outside its outer function in Swift?
You get a compile-time error because nested functions are not visible outside their outer function's scope.
Click to reveal answer
Where can a nested function be called in Swift?
AOnly inside its outer function
BAnywhere in the program
COnly inside other nested functions
DOnly in the main program
✗ Incorrect
Nested functions are only accessible within the outer function where they are defined.
Can a nested function access variables declared in its outer function?
AYes, it shares the same scope
BNo, it has its own separate scope
COnly if variables are global
DOnly if variables are constants
✗ Incorrect
Nested functions can access and modify variables from their outer function because they share the same scope.
What is a benefit of using nested functions?
AThey can be called from anywhere
BThey run faster than normal functions
CThey help organize code and limit scope
DThey automatically make code asynchronous
✗ Incorrect
Nested functions help keep related code together and limit where functions can be used.
What error occurs if you call a nested function outside its outer function?
ARuntime error
BLogical error
CNo error, it works fine
DCompile-time error
✗ Incorrect
Calling a nested function outside its outer function causes a compile-time error because it is out of scope.
Which keyword is used to define a nested function in Swift?
Anested
Bfunc
Cinner
Ddef
✗ Incorrect
The keyword 'func' is used to define all functions in Swift, including nested ones.
Explain what nested functions are and why you might use them in Swift.
Think about how functions inside functions help keep code tidy and safe.
You got /4 concepts.
Describe how variable scope works with nested functions in Swift.
Consider where variables live and who can see them.
You got /3 concepts.
Practice
(1/5)
1. What is a nested function in Swift?
easy
A. A function that calls itself
B. A function that returns another function
C. A function defined inside another function
D. A function defined outside any class or struct
Solution
Step 1: Understand the definition of nested functions
Nested functions are functions written inside other functions to organize code better.
Step 2: Match the definition to the options
A function defined inside another function correctly describes a function inside another function, which is the definition of nested functions.
Final Answer:
A function defined inside another function -> Option C
Quick Check:
Nested function = function inside function [OK]
Hint: Nested means inside another function [OK]
Common Mistakes:
Confusing nested with recursive functions
Thinking nested functions are global
Mixing nested with returning functions
2. Which of the following is the correct syntax to define a nested function in Swift?
easy
A. func outer() { func inner() { } }
B. func outer() { func inner; }
C. func outer() { inner func() { } }
D. func outer() { func inner() }
Solution
Step 1: Review Swift function syntax
Functions are defined with 'func name() { }'. Nested functions follow the same syntax inside another function.
Step 2: Check each option for correct syntax
func outer() { func inner() { } } uses correct syntax with braces for both outer and inner functions. Others have missing braces or wrong order.
Final Answer:
func outer() { func inner() { } } -> Option A
Quick Check:
Nested function syntax = func inside func with braces [OK]
Hint: Look for 'func' with braces inside another function [OK]
Common Mistakes:
Omitting braces for inner function
Using semicolon instead of braces
Placing 'func' keyword incorrectly
3. What will be the output of the following Swift code?
D. innerFunc() called before its definition causes error
Solution
Step 1: Analyze function call order
The code calls 'innerFunc()' before it is defined inside 'calculate()'. Swift requires functions to be defined before use.
Step 2: Understand Swift's function declaration rules
Calling a nested function before its declaration causes a compile-time error.
Final Answer:
innerFunc() called before its definition causes error -> Option D
Quick Check:
Call before definition = error [OK]
Hint: Define nested functions before calling them [OK]
Common Mistakes:
Assuming nested functions can be called before definition
Thinking missing return type causes error here
Believing nested functions can't be defined inside
5. How can you use nested functions to create a function that returns another function which adds a fixed number to its input?
Choose the correct Swift code.
hard
A. func makeAdder(_ x: Int) -> Int {
func adder(y: Int) -> Int {
return x + y
}
return adder(5)
}
B. func makeAdder(_ x: Int) -> (Int) -> Int {
func adder(y: Int) -> Int {
return x + y
}
return adder
}
C. func makeAdder(_ x: Int) -> (Int) -> Int {
return func(y: Int) -> Int { x + y }
}
D. func makeAdder(_ x: Int) -> (Int) -> Int {
func adder(y: Int) -> Int {
return y
}
return adder
}
Solution
Step 1: Understand the goal
We want a function that returns another function adding a fixed number 'x' to input 'y'.
Step 2: Check each option's logic
func makeAdder(_ x: Int) -> (Int) -> Int {
func adder(y: Int) -> Int {
return x + y
}
return adder
} defines nested 'adder' using 'x' and returns it correctly. func makeAdder(_ x: Int) -> Int {
func adder(y: Int) -> Int {
return x + y
}
return adder(5)
} returns a value, not a function. func makeAdder(_ x: Int) -> (Int) -> Int {
return func(y: Int) -> Int { x + y }
} has invalid syntax. func makeAdder(_ x: Int) -> (Int) -> Int {
func adder(y: Int) -> Int {
return y
}
return adder
} returns a function ignoring 'x'.
Final Answer:
func makeAdder(_ x: Int) -> (Int) -> Int {
func adder(y: Int) -> Int {
return x + y
}
return adder
} -> Option B
Quick Check:
Nested function returns function adding x = func makeAdder(_ x: Int) -> (Int) -> Int {
func adder(y: Int) -> Int {
return x + y
}
return adder
} [OK]
Hint: Return nested function that uses outer parameter [OK]
Common Mistakes:
Returning a value instead of a function
Incorrect nested function syntax
Ignoring outer function parameter inside nested function
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.