All parameters passed into a Swift function are constants, so you can’t change them. If you want, you can pass in one or more parameters as inout
, which means they can be changed inside your function, and those changes reflect in the original value outside the function.
For example, if you want to double a number in place – i.e., change the value directly rather than returning a new one – you might write a function like this:
func doubleInPlace(number: inout Int) {
number *= 2
}
To use that, you first need to make a variable integer – you can’t use constant integers with inout
, because they might be changed. You also need to pass the parameter to doubleInPlace
using an ampersand, &
, before its name, which is an explicit recognition that you’re aware it is being used as inout
.
In code, you’d write this:
var myNum = 10
doubleInPlace(number: &myNum)
SPONSORED Alex is the iOS & Mac developer’s ultimate AI assistant. It integrates with Xcode, offering a best-in-class Swift coding agent. Generate modern SwiftUI from images. Fast-apply suggestions from Claude 3.5 Sonnet, o3-mini, and DeepSeek R1. Autofix Swift 6 errors and warnings. And so much more. Start your 7-day free trial today!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.