Kotlin programlama dilinde değişkenleri tanımlama ve değer atama konusuna bir önceki yazımızda giriş yapmıştık. Bu yazımızda const
ve val
ile değer atamaya daha yakından bakacağız.
val değişkenler
Aşağıdaki kod, pi
sabit sayısını içeren bir tam sayı ve helloMsg
isimli bir String değerini içeren iki adet değişken tanımlamaktadır. Bu değerler ilk atanmalarından sonra tekrar değiştirilemezler.
fun main() {
val pi = 3.1415
val helloMsg = "Hello"
println(pi) // 3.1415
println(helloMsg) // Hello
}
val
anahtar kelimesi ile tanımlanmış ve ilk değeri atanmış pi
değişkenine yeni bir değer atamaya çalışalım. Aşağıdaki örnekte görüldüğü gibi pi sayısına yeni bir değer atamak istediğimizde “Val cannot be reassigned” hatası alırsınız.
fun main() {
val pi = 3.1415
val helloMsg = "Hello"
println(pi) // 3.1415
println(helloMsg) // Hello
pi = 3.1416 // Val cannot be reassigned
}
val
ile tanımlanmış ancak ilk değeri atanmamış yani başlangıcı yapılmamış bir değişkeni komutlarınızda kullanamazsınız. Bunu bir örnekle açıklayalım. Aşağıdaki kod ile boolFalse
isimli değişken val
ile tanımlanmış ancak türü Boolean
olarak belirtilse de ilk değeri (True veya False) atanmadığından “Variable ‘boolFalse’ must be initialized” hata mesajını alırsınız.
val boolFalse: Boolean
println(boolFalse) // error line
Doğru kullanım aşağıdaki gibi olmalıdır.
val boolFalse: Boolean // not initialized
boolFalse = false // initialized
println(boolFalse) // no errors here
const değişkenler
Kotlin programlamada const
anahtar kelimesi ile val
ifadesinin birlikte tanımlandığı bir sabit değer atama yöntemi bulunmaktadır. Bu yöntem ile sabit değer, program kodları derlenirken oluşturulur ve bir daha değiştirilemez. Kural olarak const
biçiminde tanımlanan değişkenlerin isimlerinin tamamının BÜYÜK HARF olması tavsiye edilir.
const val WRITER_NAME = "JOHN DOE"
Bu şekilde sabit değer tanımlamanın bazı kuralları bulunmaktadır.
- Sabit değerlere yalnızca String ve birincil türler dediğimiz INT, CHAR, DOUBLE, BOOLEAN veri tipleri atanabilir. Aşağıda buna ait bir örnek gösterilmektedir.
- Sabitler, fonksiyonların en dışında tanımlanmalıdır. Fonksiyon içerisinde const ifadesi ile tanımlanamazlar.
const val CONST_INT = 256
const val CONST_DOUBLE = 3.14
const val CONST_CHAR = 'f'
const val CONST_STRING = "I am constant"
const val CONST_ARRAY = arrayOf(1, 2, 3) // error: only primitives and strings are allowed
fun main() {
println(CONST_INT)
println(CONST_STRING)
}
Bu açıklamalar ve kurallar başlangıçta bir miktar karışık gelmiş olabilir. Bunların, yazılan kodun doğru ve hatasız çalışması için gerekli olduğunu unutmayın. Pratik yaptıkça bu kuralları daha yakından tanıyacaksınız.