Swift version: 5.10
When you pass value types as parameters into a function, they are constants and so can’t be modified. Sometimes it would be convenient to change this so you can modify the values, and that’s what inout
does for us: it lets us modify parameters inside a function, and have those changes persist outside the function.
For example, we could write a function that accepts a number and doubles it:
func double(_ number: inout Int) {
number *= 2
}
That doesn’t return a value – it modifies the value that was passed in directly.
When it comes to calling functions with inout
parameters, Swift has two rules: we must pass in variables, and we also need to use &
before the parameter name to acknowledge that it might be changed.
So, we would call double()
like this:
var number = 5
double(&number)
print(number)
That will print 10.
inout
parameters are more common than you might realize. For example, if you use +=
to append one string to another, it uses inout
to modify the string in place.
SPONSORED Take the pain out of configuring and testing your paywalls. RevenueCat's all new Paywall Editor allow you to remotely configure your paywall view without any code changes or app updates.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.