val ve var her ikisi de değişken tanımlamak için kullanılır, ancak temel farklılıklar vardır:
val number = 42 // number = 10 // hata!
var counter = 0 counter++ // izinlidir
Güvenlik ve Performans:
val kullanmak tercih edilir — bu, rastgele değişikliklerden korur ve kodun daha anlaşılır olmasını sağlar.val kullanmak, derleyicinin ve IDE'nin hataları derleme aşamasında yakalamasını ve kodu optimize etmesini sağlar.
valolarak tanımlanan bir nesne değiştirilebilir mi?
Cevap: Değişkenin kendisinin değeri (referansı) yeniden atanamaz, ancak bu bir nesne (örneğin, bir liste) ise, iç durumu değiştirilebilir.
val list = mutableListOf(1,2) list.add(3) // Mümkün! Ancak list = başkaListe hatalı olur.
Hikaye
Bir e-ticaret projesinde, geliştirici ürün listesini
val items = mutableListOf<Product>()olarak tanımlamış, böylece listenin tamamen değiştirilemez olduğunu düşünmüştü. Aslında başka bir yerde liste değiştirilmiş (yeni bir öğe eklenmiş) ve bu, sepetin görüntülenmesini beklenmedik şekilde etkilemiştir.
Hikaye
Büyük metin dosyalarını ayrıştıran bir araçta, dizi tamponu
var bufferolarak tanımlanmıştı, oysa ayrıştırma işlemi sırasında değiştirilmesine gerek yoktu. Yanlışlıkla yeni bir diziye yeniden atama yapıldı ve bu, bellek sızıntısına ve yanlış veri işlenmesine yol açtı.
Hikaye
Bir mikro hizmet kodunda, çoğu değişken "her ihtimale karşı"
varolarak tanımlanıyordu, sonuç olarak büyük ifadelerde bazen nesnenin durumu farklı iş parçacıklarında değiştiriliyordu, bu da yarış durumu nedeniyle zor tespit edilen hatalara yol açıyordu.