Function Varargs Parameter
Varargs Parameter adalah parameter function yang memungkinkan kita mengirimkan jumlah argument yang tidak terbatas ke dalam sebuah function.
Dengan vararg, kita tidak perlu menentukan berapa banyak argument yang akan diterima oleh function.
Sintaks Varargs
Bentuk umum:
fun namaFunction(vararg namaParameter: TipeData) {
// kode
}
Contoh:
fun hitungSemua(vararg values: Int): Int {
var total = 0
for (value in values) {
total += value
}
return total
}
Pada contoh tersebut:
vararg values: Int
berarti function hitungSemua() dapat menerima satu atau banyak nilai bertipe Int.
Contoh Pemanggilan Function
Function dapat dipanggil dengan jumlah argument yang berbeda.
Contoh:
hitungSemua(10)
Atau:
hitungSemua(10, 20)
Atau:
hitungSemua(10, 20, 30)
Bahkan dapat menerima lebih banyak nilai:
hitungSemua(10, 20, 30, 40, 50)
Semua argument tersebut akan diterima oleh parameter values.
Contoh Kasus Menghitung Semua Nilai
Kita dapat menggunakan vararg untuk membuat function yang menghitung total dari beberapa angka.
Contoh:
fun hitungSemua(vararg values: Int): Int {
var total = 0
for (value in values) {
total += value
}
return total
}
Pada function tersebut terdapat variabel:
var total = 0
Variabel total digunakan untuk menyimpan hasil penjumlahan.
Kemudian kita melakukan perulangan:
for (value in values) {
total += value
}
Setiap nilai yang terdapat pada values akan dijumlahkan ke dalam total.
Setelah seluruh nilai selesai diproses, function mengembalikan hasil menggunakan:
return total
Contoh Program Lengkap
fun hitungSemua(vararg values: Int): Int {
var total = 0
for (value in values) {
total += value
}
return total
}
fun main() {
val values = hitungSemua(10, 40, 30, 20)
println(values)
}
Output:
100
Perhitungannya adalah:
10 + 40 + 30 + 20 = 100
Cara Kerja vararg
Ketika function dipanggil:
hitungSemua(10, 40, 30, 20)
nilai-nilai tersebut akan diterima oleh:
vararg values: Int
Secara sederhana, kita dapat membayangkan values berisi:
10
40
30
20
Kemudian for mengambil setiap nilai satu per satu:
for (value in values) {
total += value
}
Prosesnya:
total = 0
total = 0 + 10
total = 10 + 40
total = 50 + 30
total = 80 + 20
total = 100
vararg dengan Jumlah Argument yang Berbeda
Keuntungan utama vararg adalah kita tidak perlu menentukan jumlah argument.
Contoh:
println(hitungSemua(10))
Output:
10
Contoh:
println(hitungSemua(10, 20))
Output:
30
Contoh:
println(hitungSemua(10, 20, 30))
Output:
60
Contoh:
println(hitungSemua(10, 20, 30, 40))
Output:
100
vararg dengan Parameter Lain
vararg juga dapat digunakan bersama parameter lainnya.
Contoh:
fun hitungTotal(nama: String, vararg values: Int): Int {
var total = 0
for (value in values) {
total += value
}
println("Nama: $nama")
return total
}
Pemanggilan:
val total = hitungTotal("Ucup", 10, 20, 30)
println("Total: $total")
Output:
Nama: Ucup
Total: 60
Pada contoh tersebut:
nama: String
adalah parameter biasa.
Sedangkan:
vararg values: Int
adalah parameter yang dapat menerima banyak argument.
vararg Harus Berada di Posisi yang Tepat
Dalam sebuah function, vararg biasanya digunakan setelah parameter wajib.
Contoh:
fun hitungTotal(nama: String, vararg values: Int): Int {
var total = 0
for (value in values) {
total += value
}
return total
}
Pemanggilan:
hitungTotal("Ucup", 10, 20, 30)
Argument pertama "Ucup" diberikan kepada parameter nama.
Sedangkan:
10, 20, 30
diberikan kepada values.
Kapan Menggunakan vararg?
vararg cocok digunakan ketika sebuah function membutuhkan jumlah argument yang dapat berubah-ubah.
Contohnya:
- Menghitung total beberapa angka.
- Menghitung rata-rata beberapa nilai.
- Mencari nilai terbesar.
- Mencari nilai terkecil.
- Menggabungkan beberapa String.
- Memproses daftar data yang jumlahnya tidak tetap.
Contoh mencari nilai terbesar:
fun nilaiTerbesar(vararg values: Int): Int {
var terbesar = values[0]
for (value in values) {
if (value > terbesar) {
terbesar = value
}
}
return terbesar
}
Penggunaan:
val result = nilaiTerbesar(10, 40, 30, 20)
println(result)
Output:
40
Kesimpulan
vararg digunakan ketika sebuah function dapat menerima jumlah argument yang tidak tetap.
Contoh:
fun hitungSemua(vararg values: Int): Int {
var total = 0
for (value in values) {
total += value
}
return total
}
Function tersebut dapat dipanggil dengan jumlah argument yang berbeda:
hitungSemua(10)
hitungSemua(10, 20)
hitungSemua(10, 20, 30)
hitungSemua(10, 20, 30, 40)
Dengan vararg, function menjadi lebih fleksibel karena kita tidak perlu menentukan jumlah argument yang harus diberikan sejak awal.