4. Variabel Val (Tutorial KOTLIN - Bahasa Indonesia)
Terkadang, Anda perlu menggunakan variabel yang tidak boleh diubah selama eksekusi program. Variabel tersebut dikenal sebagai konstanta, atau variabel val di Kotlin, yang dideklarasikan dengan kata kunci val. Perbedaan antara variabel var dan variabel val adalah bahwa kita tidak dapat mengubah nilai variabel val setelah ditetapkan.
Kode berikut memperkenalkan dua variabel val: pi, yang mewakili konstanta matematika terkenal, dan helloMsg, yang mewakili teks string.
val pi = 3.1415
val helloMsg = "Hello"
println(pi) // 3.1415
println(helloMsg) // Hello
Kedua variabel tidak dapat dimodifikasi, tetapi dapat diakses sebanyak yang kita butuhkan.
Kompiler akan menghasilkan kesalahan jika mencoba memodifikasi nilai variabel val, jadi upaya untuk mengkompilasi kode di bawah ini akan menghasilkan kesalahan: Val tidak dapat dipindahkan.
val pi = 3.1415
pi = 3.1416 // error line
Jika variabel val digunakan sebelum diberi nilai, kompiler juga akan menghasilkan kesalahan:
val boolFalse: Boolean
println(boolFalse) // error line
Dengan kode di atas, Anda akan mendapatkan error Variabel 'boolFalse' harus diinisialisasi. Untuk memperbaikinya, berikan nilai sebelum mengakses variabel:
val boolFalse: Boolean // not initialized
boolFalse = false // initialized
println(boolFalse) // no errors here
Perhatikan bahwa nilai variabel val dapat dipindahkan ke variabel var tanpa batasan apa pun dan nilai variabel biasa dapat diubah sebanyak yang diperlukan:
val count = 10
var cnt = count
cnt = 20 // no errors here, cnt is not a constant
Variabel Val dan Mutabilitas
Penting untuk dicatat bahwa val bukanlah sinonim dari tidak dapat diubah. Dalam contoh berikut, kita akan menggunakan MutableList, yang merupakan sekumpulan elemen terurut dari tipe yang sama. Jika Anda ingin maju dan mempelajari lebih lanjut tentang MutableList, Anda dapat menggunakan topik yang sesuai, tetapi saat ini bukan keharusan.
// list creation
val myMutableList = mutableListOf(1, 2, 3, 4, 5)
// trying to update the list
myMutableList = mutableListOf(1, 2, 3, 4, 5, 6) // error line
Baris kedua tidak dapat dikompilasi, karena kami mencoba menetapkan kembali variabel val. Namun, ada satu hal penting yang perlu diingat.
Jadi, kode berikut ini benar:
// list creation
val myMutableList = mutableListOf(1, 2, 3, 4, 5)
// adding a new element
myMutableList.add(6) // it works
// printing the list
println(myMutableList) // [1, 2, 3, 4, 5, 6]
Seperti yang Anda lihat, kode ini mengubah status internal myMutableList dengan menambahkan bilangan bulat lain. Saat memanggil fungsi add(), tidak mengubah variabel itu sendiri tetapi daftar yang diwakilinya.
Jika Anda terbiasa dengan bahasa pemrograman Java, mungkin akan lebih mudah bagi Anda untuk memikirkan variabel Kotlin val sebagai variabel final Java. Mereka sangat mirip: keduanya melarang penugasan ulang nilai ke variabel tetapi memungkinkan perubahan keadaan internal objek.
Variabel Konstanta
Di Kotlin, ada juga pengubah const, yang digunakan sebelum kata kunci val untuk mendeklarasikan konstanta waktu kompilasi. Nilai variabel const diketahui pada waktu kompilasi dan tidak akan diubah saat runtime:
const val MY_STRING = "ini adalah konstanta string"
Kode berikut akan memberi Anda kesalahan, karena nilainya tidak diketahui sebelum eksekusi program dan itu bukan konstanta:
const val MY_STRING = readln() // not a constant String!!!
Ada beberapa batasan kapan pengubah const dapat diterapkan. Pertama, ini hanya dapat digunakan dengan String atau variabel tipe primitif:
const val CONST_INT = 127
const val CONST_DOUBLE = 3.14
const val CONST_CHAR = 'c'
const val CONST_STRING = "I am constant"
const val CONST_ARRAY = arrayOf(1, 2, 3) // error: only primitives and strings are allowed
Selain itu, variabel const perlu dideklarasikan di tingkat atas, di luar fungsi apa pun:
const val MY_INT_1 = 1024 // correct line
fun main() {
const val MY_INT_2 = 2048 // error: Modifier 'const' is not applicable to 'local variable'
}
Kapan menggunakan variabel val
Praktik yang baik adalah menggunakan variabel val secara default. Kemudian, ketika tampaknya diperlukan untuk kode tersebut, ubahlah menjadi variabel var:
var a = 1024
val b = 256
val c = 128
a += b * c
Pendekatan ini memungkinkan Anda untuk menulis program dengan jumlah minimum variabel yang dapat diubah, yang menghasilkan lebih sedikit kesalahan.