Kotlin değer atama ve veri tipi belirleme
Kotlin programlama dilinde değişken tanımlama konusunda bilinmesi gereken bazı ince noktaları bu yazımızda açıklayacağız. Önceki iki yazımızda ("Kotlin Değişken ve Değer tanımlama", “Kotlin’de Sabitler ve değişkenler”) açıkladığımız kurallara ilave olarak bu yazıyı hazırladık.
Hepimiz sayıların ve yazıların farklı türler olduğunu biliyoruz. Sayılar ile matematiksel işlemler yapılır iken yazılar ile matematik işlemleri yapılmaz. Bu ayrımın programla dillerinde de olduğunu belirtmeliyiz. Bu yüzden her değişkenin bir tipi bulunmalıdır.
Değişken Tanımlama Şablonu
Kotlin programlama dilinde değişken tanımlama şablonu aşağıdaki gibidir.
val/var identifier: Type = initialization
- En başta val veya var ifadesi yer alır. Değişkenin değerinin davranışına göre val veya var seçimi yapılır. Bunun farklarını “Kotlin Değişken ve Değer tanımlama” başlıklı yazımızda açıklamıştık.
- identifier: Yani değişkenin ismi olmalıdır. Diğer değişkenler ile karışmaması için anlamlı ve ne işe yaradığını anlatan bir isim seçimi her zaman faydalı bir kullanım olacaktır.
- Type : Değişkenin tipini burada yazıyoruz. Değerin tipini ifade eden String, Int, Boolean gibi ifadeler büyük harfle başlar. Değişkenin isminden sonra iki nokta üst üste yazıldıktan sonra tip yazılır
- Initialization : Değişkenimize ilk değer atamasını yapıyoruz. Başlangıç değeri anlamına gelir. Değişkenin tip belirlendiğinde ilk değer hemen atanmak zorunda değildir. Birazdan doğru ve yanlış kullanım örneklerini aşağıda vereceğiz.
Şimdi bu şablona göre bir örnek yazalım. Aşağıdaki örnek, tüm kuralları eksiksiz yerine getiren bir yapıdadır.
fun main() {
val name: String = "John"
//identifier =name , Type = String, initialization = John
var age: Int = 16
//identifier =age , Type = Int, initialization = 16
println(name)
println(age)
}
John
16
Process finished with exit code 0
Veri Tipinin Belirlenmesi (type inference)
Bir değişkeni tanımladığımız anda ilk değerini de (initializer) belirliyorsak, veri tipini yazmayabiliriz. Kotlin, girilen ilk değere bakarak tipini kendisi tespit edecektir. Bu şekilde kodlarımız daha sade hale gelir. Örnek aşağıdadır.
fun main() {
val name= "John"
//identifier =name , initialization = John
var age= 16
//identifier =age , initialization = 16
println(name::class.simpleName)
println(age::class.simpleName)
}
/* Expected Output
String
Int
Process finished with exit code 0
*/
Yukarıda bulunan örnekte görüldüğü gibi, veri tipleri girilmediği halde ilk değerlerin tipine bakarak Kotlin veri tipini otomatik belirlemiştir. Yabancı kaynaklardan konuyu incelediğinizde bu işlemin “type inference” olarak ifade edildiğini görebilirsiniz.
İlk Değer Olmadan Değişken Tanımlama
Bir değişkeni tanımlamak ancak ilk değerini sonra belirlemek isterseniz, değişkenin tipini mutlaka yazmanız gerekmektedir. Kotlin ilk değer olmadan değişkenin tipini belirleyemez. Kotlin için değişken tanımlandığında tipi de belirlenmelidir. Sonradan tip değiştirilemez. Aşağıda bunun örneğini görebilirsiniz.
fun main() {
val name: String
//identifier =name , Type = String
var age: Int
//identifier =age , Type
name = "John"
age = 16
}
Örnekte görüldüğü gibi değişken adı ve tipi belirlenmiş ancak ilk değer başka bir yerde belirlenmiştir. Bu kullanım doğrudur. İlk değer başka zaman belirleniyorsa değişken tipini yazmak gerekir.
Hatalı değişken tanımlama
Hem Veri tipi, hem de ilk değeri olmadan değişken tanımlama hata ile karşılaşmanıza sebep olur. Aşağıdaki kullanım yanlıştır. Programınız derlenmeyecektir.
fun main() {
val name //error
name = "John"
var age //error
age = 16
}