Kotlin: Mengenal Range

Bahasa Kotlin mempunyai fitur keren yang bernama range. Kalian mungkin telah lama menggunakan fitur ini, namun kalian tidak menyadarinya. Fitur ini mempermudah kita melakukan perulangan dari suatu nomor ke nomor lain.

Apa itu Range?

Range secara bahasa berarti barisan atau jangkauan. Range dalam Bahasa Kotlin adalah tipe data khusus yang merepresentasikan kumpulan angka di antara 2 angka. Range bisa dianggap sebagai barisan aritmetika dalam Matematika.

Range banyak sekali digunakan pada perulangan. Contoh penggunaannya seperti berikut:

for (angka in 1..10) {
    println(angka)
}

Jika kalian belum memahami perulangan dalam bahasa Kotlin kalian bisa melihat Belajar Dasar Kotlin: Perulangan

1..10 merupakan range yang berisi kumpulan angka dari 1 dari sampai 10 yaitu 1,2,3,4,5,6,7,8,9 dan 10.

Range juga dapat disimpan di variabel seperti ini:

val barisan = 1..10
for (angka in barisan) {
    println(angka)
}

Range juga dapat digunakan untuk mengecek apakah suatu angka berada di antara 2 angka tertentu. Contohnya:

println(10 in 1..20) // true

Jika kalian ingin mengetahui lebih banyak operator dalam bahasa Kotlin kalian bisa melihat Belajar Dasar Kotlin: Operator Dasar

Pada kode di atas kita memeriksa apakah 10 berada di antara 1 dan 20.

Membuat Range

Range dapat dibuat dengan berbagai cara. Cara pertama adalah menggunakan 2 titik (..). Contohnya seperti berikut:

for (angka in 1..10) {
    println(angka)
}

/*
1
2
3
4
5
6
7
8
9
10
*/

Pada kode di atas kita membuat range yang dimulai dari angka 1 dan berakhir di angka 10 (angka 1 dan 10 termasuk).

Range juga dapat dibuat dengan until. Contohnya:

for (angka in 1 until 10) {
    println(angka)
}

/*
1
2
3
4
5
6
7
8
9
*/

Pada kode di atas kita membuat range yang dimulai dari 1 naik sampai ke angka 10, namun angka 10 tidak termasuk. Sehingga perulangan hanya sampai angka 9.

Range juga dapat dibuat dengan downTo. Contohnya:

for (angka in 10 downTo 1) {
    println(angka)
}

/*
10
9
8
7
6
5
4
3
2
1
*/

Pada kode di atas kita membuat range yang dimulai dari angka 10 kemudian turun sampai ke angka 1.

Mengubah Jumlah Step

Pada kode sebelumnya range yang kita buat mempunyai langkah (step) berjumlah 1. Maksudnya adalah perbedaan dari angka sekarang dengan angka sebelumnya berjumlah 1.

Jumlah langkah (step) bisa kita ubah menggunakan step. Contohnya seperti ini:

for (angka in 1..10 step 2) {
    println(angka)
}

/*
1
3
5
7
9
*/

Pada kode di atas terlihat perbedaan antara suatu angka dengan angka sebelumnya adalah 2. Namun kenapa angka 10 tidak ikut? Karena akhir dari range adalah 10 dan setelah 9 adalah 11 maka range berhenti di angka 9.

step juga bisa digunakan dengan until seperti berikut:

for (angka in 1 until 8 step 2) {
    println(angka)
}

/*
1
3
5
7
*/

step juga bisa digunakan dengan downTo seperti berikut:

for (angka in 12 downTo 1 step 2) {
    println(angka)
}

/*
12
10
8
6
4
2
*/

Membalik Range

Range bisa dibalik menggunakan fungsi reversed. Contohnya:

val barisan = 1..5

for (angka in barisan.reversed()) {
    println(angka)
}

/*
5
4
3
2
1
*/

Pada kode di atas kita membuat range dari 1 sampai 5. Kemudian kita membaliknya sehingga terbentuk range dari 5 turun sampai ke 1.