In-out parameters let a function change the value of a variable you pass in. This helps when you want the function to update something directly.
In-out parameters for mutation in Swift
func functionName(parameterName: inout Type) { // code that changes parameterName } // Calling the function: functionName(&variable)
Use inout before the parameter type to allow mutation.
Use & before the variable name when calling the function to pass it as in-out.
myNumber by changing it inside the function.func doubleValue(number: inout Int) { number = number * 2 } var myNumber = 10 doubleValue(&myNumber) print(myNumber)
func swapValues(a: inout Int, b: inout Int) { let temp = a a = b b = temp } var x = 5 var y = 10 swapValues(&x, &y) print("x = \(x), y = \(y)")
This program shows how the increment function changes the original count variable by adding 1.
func increment(value: inout Int) { value += 1 } var count = 7 print("Before increment: \(count)") increment(&count) print("After increment: \(count)")
You must use & when passing a variable to an in-out parameter.
Constants and literals cannot be passed as in-out parameters because they cannot be changed.
In-out parameters are useful for modifying variables without returning new values.
In-out parameters let functions change variables passed to them.
Use inout in the function and & when calling.
This helps update values directly and keep changes after the function ends.
Practice
What does the inout keyword do in Swift functions?
Solution
Step 1: Understand the role of
Theinoutinoutkeyword allows a function to receive a variable and modify it directly.Step 2: Effect on the original variable
Changes made inside the function affect the original variable outside the function.Final Answer:
Allows the function to modify the original variable passed in. -> Option AQuick Check:
inoutmeans modify original variable [OK]
inout means function can change your variable [OK]- Thinking
inoutcreates a copy instead of modifying original - Forgetting to use & when calling the function
- Assuming variables are constant inside the function
Which of the following is the correct way to declare a function with an inout parameter in Swift?
func updateValue(____ value: inout Int) { value += 10 }Solution
Step 1: Recall Swift syntax for
The correct syntax placesinoutparametersinoutbefore the type, after the parameter name:paramName: inout Type.Step 2: Match the options
func updateValue(value: inout Int) matches this syntax exactly:value: inout Int.Final Answer:
func updateValue(value: inout Int) -> Option BQuick Check:
Parameter syntax = name: inout Type [OK]
inout goes after parameter name, before type [OK]- Placing
inoutbefore parameter name - Swapping parameter name and type order
- Using invalid syntax like 'inout value in Int'
What will be the output of this Swift code?
func doubleValue(_ number: inout Int) {
number *= 2
}
var myNum = 5
doubleValue(&myNum)
print(myNum)Solution
Step 1: Understand the function behavior
The function doubles the value of the passed variable by multiplying it by 2.Step 2: Trace the code execution
VariablemyNumstarts at 5, is passed with&to allow mutation, so after the function call it becomes 10.Final Answer:
10 -> Option CQuick Check:
In-out parameter doubles 5 to 10 [OK]
- Forgetting & when calling function
- Expecting original value unchanged
- Confusing parameter passing with copy
Identify the error in this Swift code snippet:
func increment(_ value: inout Int) {
value += 1
}
let number = 10
increment(&number)Solution
Step 1: Check variable mutability
The variablenumberis declared withlet, making it a constant.Step 2: Understand inout parameter requirements
Inout parameters require a variable that can be modified, so constants cannot be passed.Final Answer:
Cannot pass a constant as an inout parameter. -> Option AQuick Check:
Inout needs variable, not constant [OK]
- Trying to pass constants as inout parameters
- Forgetting & when calling function
- Thinking function must return value when using inout
You want to write a function swapValues that swaps two integers using inout parameters. Which of the following implementations correctly swaps the values?
func swapValues(_ a: inout Int, _ b: inout Int) {
____
}Solution
Step 1: Understand swapping logic
To swap two values, you need a temporary variable to hold one value while assigning the other.Step 2: Check each option
var temp = a a = b b = temp correctly declares a temporary variable withvarand swaps values safely. let temp = a temp = b b = temp usesletwhich is immutable and causes error. a = b b = a overwritesabefore assigningb. a = b b = a - b a = a - b uses arithmetic swap but is more complex and not recommended here.Final Answer:
var temp = a a = b b = temp -> Option DQuick Check:
Use temp variable with var to swap values [OK]
- Using let for temporary variable causing immutability error
- Overwriting one variable before saving its value
- Trying to swap without a temporary variable incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
