When arguments are passed to a function, they are copied. Therefore, values that are passed into a function are unchanged in the caller's scope when the function returns. This behavior is known as call-by-value.
// Declare a function that changes the first two elements
// of an array of integers.
//
fun change(_ numbers: [Int]) {
// Change the elements of the passed in array.
// The changes are only local, as the array was copied.
//
numbers[0] = 1
numbers[1] = 2
// `numbers` is `[1, 2]`
}
let numbers = [0, 1]
change(numbers)
// `numbers` is still `[0, 1]`
Parameters are constant, i.e., it is not allowed to assign to them.
fun test(x: Int) {
// Invalid: cannot assign to a parameter (constant)
//
x = 2
}