Sobes.tech
Senior

Kotlin dilinin hangi özelliklerini diğer programlama dillerinde görmek isterdiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

  • Genişletme fonksiyonları: Varolan sınıflara yeni fonksiyonlar eklemeye izin verir, kalıtım veya dekoratör desenleri kullanmadan. Kodun okunabilirliğini ve organizasyonunu artırır.

  • Null güvenliği (null-safety): Tip sistemi, nullable ve non-nullable tipleri açıkça ayırır ve derleme sırasında NullPointerException hatalarını önler.

  • Veri sınıfları: Veri saklama için sınıfların oluşturulmasını basitleştirir ve otomatik olarak equals(), hashCode(), toString(), copy() fonksiyonlarını üretir.

    data class User(val name: String, val age: Int)
    
  • While ve when ifadeleri: when, switch'e güçlü bir alternatif olup çeşitli koşulları (türler, aralıklar, boolean koşulları) destekler, while ise son koşulun değerini döndüren bir ifade olabilir.

    val result = when (x) {
        1 -> "bir"
        in 2..10 -> "iki ile ona arasında"
        is String -> "dize"
        else -> "başka bir şey"
    }
    
  • Koruletinler (Coroutines): Hafif iş parçacıklarıdır, asenkron ve bloklamayan programlamayı kolaylaştırır. Dil seviyesinde entegre edilmiştir.

  • İsimlendirilmiş ve opsiyonel argümanlar: Fonksiyon çağrılarında okunabilirliği artırır ve opsiyonel parametreleri atlamaya izin verir.

    fun greet(name: String, greeting: String = "Merhaba") {
        println("$greeting, $name!")
    }
    
    greet(name = "Dünya") // Varsayılan opsiyonel argüman kullanımı
    greet(name = "Dünya", greeting = "Selam") // Opsiyonel argümanı geçersiz kılma
    
  • Akıllı tip dönüşümleri (Smart casts): Derleyici, koşul kontrolünden sonra değişkenin tipini otomatik olarak belirler ve bu tipe ait üyeleri açıkça dönüştürmeye gerek kalmadan kullanmanıza olanak tanır.

    fun printLength(obj: Any) {
        if (obj is String) {
            // Artık obj String olarak kabul edilir
            println("Dize uzunluğu: ${obj.length}")
        }
    }
    
  • Tür çıkarımı (Type inference): Derleyici, değişkenlerin tipini otomatik olarak belirleyebilir, böylece kod tekrarı azalır.

    val number = 42 // Kotlin bunun bir Int olduğunu belirler
    val message = "Merhaba" // Kotlin bunun bir String olduğunu belirler
    
  • Lambda ifadelerinde varsayılan it parametresi: Basit lambdalar için uygundur.

    val list = listOf(1, 2, 3)
    list.forEach { println(it) } // it, listenin öğesidir