Sobes.tech
Junior

Kotlin dilinde 'this' anahtar kelimesinin kullanımını açıklayın.

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de this, mevcut sınıf örneğine atıfta bulunur. Kullanımı bağlama bağlıdır:

  1. Sınıf yöntemi içinde: this, yöntemin çağrıldığı örneğe atıfta bulunur.

    class MyClass {
        var value: Int = 0
    
        fun setValue(value: Int) {
            // this.value, sınıfın özelliğine erişmek için kullanılır
            // ve value, yöntemin parametresidir
            this.value = value 
        }
    }
    
  2. Extension fonksiyonu veya özelliği içinde: this, extension uygulanan nesneye atıfta bulunur.

    fun String.printLength() {
        // this burada, extension fonksiyonunun çağrıldığı String örneğidir
        println("Dizenin uzunluğu: ${this.length}") 
    }
    
    fun main() {
        "Merhaba".printLength() // "Dizenin uzunluğu: 7" yazdırır
    }
    
  3. Receptor ile fonksiyon literal'ları içinde: this, literal'ın alıcısına atıfta bulunur.

    fun buildString(builderAction: StringBuilder.() -> Unit): String {
        val sb = StringBuilder()
        // builderAction içinde, this, sb'ye (StringBuilder örneği) atıfta bulunur
        sb.builderAction() 
        return sb.toString()
    }
    
    val myString = buildString {
        // this burada, StringBuilder'dır
        append("Merhaba, ")
        append("Dünya!")
    }
    
  4. Nitelikli this (birden fazla alıcı varsa): Çakışmayı önlemek için kullanılır, örneğin iç içe yapılar veya farklı alıcılar içeren fonksiyon literal'ları durumunda. Sözdizimi %label@this, burada %label, bağlamla ilişkili etikettir.

    class Outer {
        inner class Inner {
            fun printThis() {
                // this, Inner örneğine atıfta bulunur
                println("Inner this: ${this}") 
                // Outer@this, Outer örneğine atıfta bulunur
                println("Outer this: ${this@Outer}") 
            }
        }
    
        fun createInner() = Inner()
    }
    
    fun main() {
        Outer().createInner().printThis()
    }
    

Genel olarak, Kotlin'de this, mevcut bağlama açık erişim sağlar; bu, sınıf örneği, extension nesnesi veya fonksiyon literal alıcısı olabilir, ve açıklığı artırır, isim çakışmalarını önler.