Kotlin Academy · Ders

Nullable Alıcılarla let, also ve run

Bir değer null olmadığında kodu çalıştırmak için kapsam işlevlerini kullanın.

3. ders / 413 adım

Nullable Alıcılarla let, also ve run, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. 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 İşlevleri Null Olabilir Değerlerle Buluşuyor

Kapsam işlevleri let, also ve run, yalnızca alıcı null değilken bir blok çalıştırmak için güvenli çağrı ?. ile çok iyi birlikte çalışır.

Güvenli Çağrıyla let

obj?.let { ... }, yalnızca obj null değilse bloğu çalıştırır; bloğun içinde it, null olmayan değeri ifade eder.

fun main() {
    val name: String? = "Kotlin"
    name?.let {
        println("Length: ${it.length}")
        println("Upper: ${it.uppercase()}")
    }
}

let Null Değerinde Bloğu Atlar

Alıcı null ise let bloğunun tamamı atlanır.

fun main() {
    val name: String? = null
    val result = name?.let {
        println("never printed")
        it.length
    }
    println(result) // null
}

let Bir Değer Döndürür

let, bloğundaki son ifadeyi döndürür; varsayılan değerler için Elvis ile zincirlenebilir.

fun main() {
    val raw: String? = "  hello "
    val cleaned = raw?.let { it.trim().uppercase() } ?: "(empty)"
    println(cleaned) // HELLO
}

Yan Etkiler İçin also

also, yan etkileri için bir blok çalıştırır ve özgün alıcıyı döndürür; zincir içinde günlük kaydı tutmak için harikadır.

fun main() {
    val name: String? = "Alice"
    val len = name?.also { println("Processing: $it") }?.length
    println("len = $len")
}

also Değeri Korur

let'in aksine also, alıcıyı değiştirmeden döndürür. Dönüştürmeden önce değeri incelemek istediğinizde kullanın.

fun main() {
    val items: List<Int>? = listOf(1, 2, 3)
    items?.also { println("Got list of size ${it.size}") }
           ?.forEach { println(it) }
}

Güvenli Çağrıyla run

obj?.run { ... }, bloğu alıcıya bağlanmış this ile çalıştırır. it. ön eki olmadan üyelere erişmek istediğinizde kullanın.

fun main() {
    val name: String? = "Kotlin"
    val info = name?.run {
        "len=$length upper=${uppercase()}"
    }
    println(info)
}

let ve run Karşılaştırması

let, it'i (lambda bağımsız değişkeni) kullanır; run, this'i (alıcıyı) kullanır. Daha iyi okunan seçeneği tercih edin.

class User(val name: String, val age: Int)
fun main() {
    val user: User? = User("Ada", 35)
    user?.let { "${it.name} age ${it.age}" }.also(::println)
    user?.run { "$name age $age" }.also(::println)
}

Birden Çok Kapsamı Zincirleme

Adım adım dönüştürme ve günlük kaydı için kapsam işlevlerini bir işlem hattı boyunca zincirleyin.

fun main() {
    val raw: String? = "  hello  "
    val result = raw
        ?.also { println("raw: '$it'") }
        ?.let { it.trim() }
        ?.also { println("trimmed: '$it'") }
        ?.uppercase()
    println(result) // HELLO
}

takeIf ile let

Koşula dayalı yürütme için takeIf (filtreleme) ile let'i birleştirin.

fun main() {
    val name: String? = "Kotlin"
    name?.takeIf { it.length > 3 }
        ?.let { println("Long name: $it") }
}

Karşıt Kalıp: İç İçe if'ler

Kapsam işlevlerinden önce:

fun main() {
    val name: String? = "Alice"
    // OLD WAY:
    if (name != null) {
        val upper = name.uppercase()
        println(upper)
    }
    // NEW WAY:
    name?.let { println(it.uppercase()) }
}

Kısa Denetim

Hangi kapsam işlevi alıcıyı değiştirmeden döndürür ve temel olarak yan etkiler için kullanılır?

Özet

?. işlecini let (blok bir değer döndürür, it kullanır), run (blok bir değer döndürür, this kullanır) veya also (alıcıyı döndürür, yan etkiler için kullanılır) ile birleştirin. Alıcı null ise hepsi yürütmeyi atlar.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“Nullable Alıcılarla let, also ve run” dersi ücretsiz mi?

Evet — “Nullable Alıcılarla let, also ve run” 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.

“Nullable Alıcılarla let, also ve run” dersinde ne öğreneceğim?

Bir değer null olmadığında kodu çalıştırmak için kapsam işlevlerini 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 3. dersidir.

“Nullable Alıcılarla let, also ve run” 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. Nullable Türler ve ? Değiştiricisi
  2. Güvenli Çağrı ?. ve Gerçek Kodda Elvis ?:
  3. Nullable Alıcılarla let, also ve run
  4. !! İşleci: Ne Zaman ve Neden Kaçınılmalı
← Kotlin Academy Sayfasına Dön