1.2 KiB
1.2 KiB
Function parameters
Immutable reference
fun add_25(Array[Int] numbers) {
numbers.push(25) // Error: `numbers` is immutable
}
When using a regular type as a parameter, only it's immutable properties can be used inside the function
fun count(Array[Int] numbers) -> Int {
let items_count = numbers.size() // Ok, `size` is pure
items_count
}
Mutable reference
fun push_25(mut Array[Int] numbers) {
numbers.push(25) // Ok, will also mutate the original array
}
Placing a mut
before the type makes the parameter a mutable
reference. Mutable methods can be used, and the original
data can be mutated.
The caller must also use mut
.
let numbers = Array(0, 1, 2, 3)
push_25(mut numbers) // Pass `numbers` as reference.
print(numbers(4)) // `Some(25)`
Clone
fun add_25(clone Array[Int] numbers) {
numbers.push(25) // Ok, the original array is unaffected
}
Using the clone
keyword before the type creates a mutable copy
of the parameter (CoW). The original data will not be mutated.
let numbers = Array(1, 2, 3, 4)
add_25(clone numbers) // Pass `numbers` as clone.
print(numbers(4)) // None