Bu dersimizde kotlinde if else kullanımını ve de kotlinin bizi null point exception hatasından nasıl kurtardığını örneklerle öğreneceğiz.
Kotlinde javadaki gibi if else yapısını kullanabiliriz. Ayrıca Kotlin’de if geriye bir değer de döndürebilir. Geleneksel kullanımı;
var max = a
if( a < b) max=b
Geriye bir değer döndürdüğünde şöyle bir kullanımı vardır:
1 2 3 4 5 |
sonuc= if(sayi1>sayi2) sayi1 else if(sayi2>sayi1) sayi2 else 0 |
Eğer if bloğunda birden fazla satır var ise son satırı değer olarak atanır.
val max = if (a > b) {
print(“Choose a”)
a
}
else {
print(“Choose b”)
b
} // bu kodda max değişkenine a veya b değişkeni atanır.
Ayrıca kotlinde string ifadeleri karşılaştırırken equal() methodu kullanılabileceği gibi aynı integer degerleri karşılaştırırken kullandığımız == ifadesi de kullanılabilir.
Gelelim null safety kavramına. Kotlin sistemi Milyar Dolarlık Hata olarak bilinen null referansından ve çıkacak olası hatalardan kaçınmak için bazı mekanizmalara sahiptir.
Pek çok programlama dilinde ki buna java da dahil null bi degere erişmeye çalışmak NullPointerException hatasına sebep olur. Kotlin bunu engellemeyi amaçlar ve kodu daha derlemeden bu hatayı önler. Ama bazı durumlarda bu hata ile karşılaşabiliriz. Kotlinde bu hatanın çıkma sebepleri şunlar olabilir:
1) Direk olarak throw NullPointException çağrısı yapmak
2) !! kullanımı
3) Dış kaynakta kullanılan Java kodu
Kotlinde var a:String = null diyemezsiniz. //compilation error
Çünkü tüm veri tipleri default olarak null değer almayacak şekildedir. null değerlere izin vermek için veri tipinin sonuna ? koymanız gerekir.
var b:String? = null ifadesi ile b değişkenine null değer atanabilir.
Şimdi a değerine ulaşırken NPE hatası almayacağınız garantidir.
1 2 |
<span class="cm-keyword">val</span> <span class="cm-def">l</span> <span class="cm-operator">=</span> <span class="cm-variable">a</span>.<span class="cm-variable">length</span> |
Ama b’ye ulaşırken bu güvenli değildir, çünkü b null olabilir, bu yüzden hata alırsınız
1 2 |
<span class="cm-keyword">val</span> <span class="cm-def">l</span> <span class="cm-operator">=</span> <span class="cm-variable">b</span>.<span class="cm-variable">length</span> <span class="cm-comment">// error: variable 'b' can be null</span> |
b’ye null olsa da olmasa da erişmek istiyorsanız b?.length demeniz gerekir.
Ayrıca Elvis Operator (?:) burda işimize yarayabilir.
val l = b?.length ?: –1 //bu ifade de eğer b null değilse uzuluğu l’ye ata, eğer null ise -1 döndür demektir.
Bu kavramlar yeni olduğundan karışık gelebilir ama bunlara alıştığınız zaman aslında çok basit ifadelerle çok hızlı bir şekilde ilerleyebileceğinizi düşünün. Bu yüzden kotlini öğrenmekten vazgeçmeyelim ve bir sonraki derste görüşelim:)