Pass an integer by reference in Kotlin
This article explores different ways to pass an integer by reference in Kotlin.
1. Using a Wrapper class
The idea is to create a reference class that contains the integer as a member field. This function is demonstrated below:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
data class IntHolder(var value: Int) { override fun toString(): String { return value.toString() } } fun increment(i: IntHolder) { i.value += 1 } fun main() { val i = IntHolder(1) println(i) // 1 increment(i) println(i) // 2 } |
2. Using an Array
We can also use an array of length one to wrap an integer.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
fun increment(arr: Array<Int>) { arr[0]++ } fun main() { var i = 1 println(i) // 1 val arr = arrayOf(i) increment(arr) i = arr[0] println(i) // 2 } |
3. Using AtomicInteger
Alternately, you can use the AtomicInteger class, which offers several useful functions for manipulating an integer.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.concurrent.atomic.AtomicInteger fun set(i: AtomicInteger) { i.incrementAndGet() } fun main() { val i = AtomicInteger(1) println(i) // 1 set(i) println(i) // 2 } |
That’s all about passing an integer by reference in Kotlin.
Also See:
Thanks for reading.
To share your code in the comments, please use our online compiler that supports C, C++, Java, Python, JavaScript, C#, PHP, and many more popular programming languages.
Like us? Refer us to your friends and support our growth. Happy coding :)