Şahsen Java’daki ? : (Ternary operator) yapısını kullanmayı çok sevdiğim için aşağıdaki kod örneklerinden 3 numaralı olanı seçerim. Kotlin inline if yapısını bu şekilde desteklemekte. Ki 3 numaralı versiyon varken inline if e gerek de yok.
1. Geleneksel kullanım
2. else ile birlikte
3. İfade olarak (expression)
4. İfade olarak
Not : If ifadesini bir expression olarak kullanıyorsanız (örneğin, değerini döndürerek veya bir değişkene atayarak) ifade, else yapısına sahip olmak zorundadır. Yani Java’daki inline if (? :) yapısında olduğu gibi burada da if i expression olarak kullanmak istiyorsak else eklemek zorundayız.
When yapısı Java ve C tipi dillerden bildiğimiz üzere Switch yapısına karşılık gelmektedir. İfade olarak veya durum olarak yazılabilmektedir. İf – else gibi de çalışabilmektedir if gibi çalışıp tüm durumlara da uğrayabilmektedir. Şu şekilde yazılmaktadır.
Eğer when yapısı ifade olarak kullanıldıysa, else yapısı zorunludur. Else tahmin edebileceğiniz üzere Default’un görevini görmektedir. Eğer derleyici tüm durumları yazdığınıza ikna olursa else zorunlu değildir.
Case olarak istediğimiz (keyfi) ifadeleri yazabiliriz. Örneğin:
When aynı zamanda if – else zincirinin yerine de kullanılabilir.
Bir nesnenin, çalışma zamanında belirli bir türe uygun olup olmadığını, is operatörünü veya ters formunu kullanarak kontrol edebiliriz. Java’daki instanceof yapısına karşılık gelmektedir.
Burada Swift’teki for yapısına benzer yeni bir tarz ortaya çıkıyor. Herhangi bir rakamın herhangi bir aralıkta olup olmadığını çok kolay bir şekilde görebiliyoruz.
is ve Range yapılarına bir göz attıktan sonra When yapısına 2 örnek daha yazabilirim.
Range yapısı ile birlikte When kullanımı :
is yapısı ile When kulanımı
fun hasPrefix(x: Any) = when(x) {
is String -> x.startsWith("prefix")
else -> false
}
Yazının burasına gelebildiyseniz For döngüsünü size açıklamam gerekmiyor diye düşünüyorum 😊
Kullanım 1; Java C# gibi dillerde olduğu gibi tek tek item item alabildiğimiz yöntem:
Kullanım 2; for içerisi bir blok olabilir(köşeli parantezlere dikkat)
For, yineleyici sağlayan her obje veya liste için kullanılabilir.
Kullanım 3; Eğer for bloğu içerisinde, integer bir indexe ihtiyaç duyarsanız:
Kullanım 4; kullanım 3 e alternatif olarak bu yolu da tercih edebilirsiniz. Kullanım 3, 2, 1biraz daha Java’cılar için basitken Kullanım 4 e alışmak biraz daha zor olabilir. But Kotlin way is this:
While ve Do-While döngülerinde değişen bir şey yok. Onlar bildiğiniz gibi.
Aynı şekilde Break ve Continue yapıları da her Object Oriented dilde çalıştığı mantıkta çalışmaktadır.
Kotlin’de açık ClassCast lara ihtiyaç duymayız. Bir Casting işlemi şu şekilde yapılabilir:
// “||” ifadesinin sağında x otomatik olarak String’e cast edilmiştir.
// “&&” ifadesinin sağında x otomatik olarak String e cast edilmiştir.
Bu tip SmartCast ler When ve While yapılarında da yapılabilir.
Eğer derleyici Casting e garanti veremiyorsa Casting gerçekleşmez. Herhangi bir Exception olmaması için Safe (Nullable) cast operatörü kullanılır. as? yapısıdır.
val x: String? = y as? String
Kaynak :
Bu yazı https://kotlinlang.org/docs/reference/ ve https://news.realm.io/news/droidcon-michael-pardo-kotlin/ Kaynaklarından faydalanılarak hazırlanmıştır.