0Pricing
Kotlin Academy · Ders

apply ve with: Yapılandırma ve Döndürme

Nesneleri yapılandırmak ve dönüş değerlerini anlamak için apply ve with kullanın.

apply ve with: Yapılandırma ve Döndürme, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Kapsam İşlevlerinin Özeti

Kotlin'in kapsam işlevleri (apply, also, let, run, with), bir bloğu bir nesnenin bağlamında yürütmenizi sağlar. Her biri alıcı (this veya it) ve döndürülen değer açısından farklıdır.

Uygulamanın Temelleri

apply { ... }, bloğu this'in alıcıya bağlandığı şekilde çalıştırır ve alıcının kendisini döndürür. Nesne yapılandırmak için idealdir.

class Person {
    var name: String = ""
    var age: Int = 0
}
fun main() {
    val p = Person().apply {
        name = "Ada"
        age = 35
    }
    println("${p.name}, ${p.age}")
}

Uygulama Neden Kullanışlıdır

apply olmadan nesneyi yapılandırmak ve ardından döndürmek için geçici bir değişkene ihtiyaç duyardınız. apply bunu tek bir ifadeye indirger.

class Config {
    var host: String = ""
    var port: Int = 0
}
fun makeConfig(): Config {
    // Without apply:
    // val c = Config(); c.host = "x"; c.port = 8080; return c
    return Config().apply {
        host = "localhost"
        port = 8080
    }
}
fun main() {
    val c = makeConfig()
    println("${c.host}:${c.port}")
}

Zincirde Uygulama

apply alıcıyı döndürdüğü için sonraki yöntem çağrılarıyla doğal biçimde zincirlenir.

class Builder {
    val parts = mutableListOf<String>()
}
fun main() {
    val result = Builder().apply {
        parts.add("hello")
        parts.add("world")
    }.parts.joinToString(" ")
    println(result) // hello world
}

with Temelleri

with(receiver) { ... }, bloğu this = alıcı olacak şekilde çalıştırır ve lambda sonucunu döndürür (alıcıyı değil).

class Rect(val w: Int, val h: Int)
fun main() {
    val area = with(Rect(3, 4)) {
        w * h
    }
    println(area) // 12
}

Uygulama ve with Karşılaştırması

Uygulama alıcıyı döndürür; bu nedenle oluşturucular için idealdir. with lambda sonucunu döndürür; bu nedenle bir alıcıdan değer hesaplamak için idealdir.

class Box(var width: Int = 0, var height: Int = 0)
fun main() {
    val box = Box().apply { width = 10; height = 20 } // returns Box
    val area = with(box) { width * height }            // returns Int
    println("$box area=$area")
}

Listelerle Uygulama

Değiştirilebilir bir koleksiyonu satır içinde yapılandırın.

fun main() {
    val list = mutableListOf<String>().apply {
        add("a")
        add("b")
        add("c")
    }
    println(list)
}

Uygulama Aynı Türü Döndürür

apply işleminin dönüş türü her zaman alıcı türüdür. Açık bir return ifadesine gerek yoktur.

class Sb {
    private val buf = StringBuilder()
    fun append(s: String): Sb { buf.append(s); return this }
    fun build(): String = buf.toString()
}
fun main() {
    val s = Sb().apply {
        append("Hello, ")
        append("Kotlin!")
    }.build()
    println(s)
}

with ile Birden Çok Üyeyi Yeniden Kullanma

with içinde alıcının tüm üyeleri kapsam içindedir; obj. ön ekine gerek yoktur.

class Person(val name: String, val age: Int)
fun main() {
    val description = with(Person("Ada", 35)) {
        "Name: $name, Age: $age, AgeNext: ${age + 1}"
    }
    println(description)
}

İç İçe Uygulama

Hiyerarşik yapılandırma için bir apply işlevini başka bir apply işlevinin içine yerleştirebilirsiniz. Bunu ölçülü kullanın.

class Address {
    var city: String = ""
    var zip: String = ""
}
class User {
    var name: String = ""
    var address: Address = Address()
}
fun main() {
    val u = User().apply {
        name = "Ada"
        address.apply {
            city = "Istanbul"
            zip = "34000"
        }
    }
    println("${u.name} in ${u.address.city}")
}

Uygulama Ne Zaman Kullanılmamalı

Alıcıyı döndürmeniz gerekmiyorsa adlandırılmış bağımsız değişkenlerle düz oluşturmayı veya let/run kullanmayı tercih edin. Sırf çeşitlilik olsun diye apply kullanmayın.

class Config(val host: String, val port: Int)
fun main() {
    // Named arguments often beat builder + apply:
    val cfg = Config(host = "localhost", port = 8080)
    println("${cfg.host}:${cfg.port}")
}

Hızlı Kontrol

apply, bloğunu çalıştırdıktan sonra ne döndürür?

Özet

apply, alıcıyı this olarak kullanan bir blok çalıştırır ve alıcıyı döndürür; nesne yapılandırması için idealdir. with, alıcıyı this olarak kullanan bir blok çalıştırır ve lambda'nın sonucunu döndürür; türetilmiş değerler için idealdir. Yapılandırma basitse adlandırılmış bağımsız değişkenleri kullanın.

Sıkça Sorulan Sorular

“apply ve with: Yapılandırma ve Döndürme” dersi ücretsiz mi?

Evet — “apply ve with: Yapılandırma ve Döndürme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“apply ve with: Yapılandırma ve Döndürme” dersinde ne öğreneceğim?

Nesneleri yapılandırmak ve dönüş değerlerini anlamak için apply ve with kullanın. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“apply ve with: Yapılandırma ve Döndürme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. apply ve with: Yapılandırma ve Döndürme
  2. let ve run: Dönüştürme ve Kapsam
  3. also: Alıcıyı Değiştirmeden Yan Etkiler
  4. Doğru Kapsam İşlevini Seçme: Karar Rehberi
← Kotlin Academy Sayfasına Dön