0Pricing
Kotlin Academy · Ders

Her Birini Ne Zaman Kullanmalı

Ödünleşimler

Her Birini Ne Zaman Kullanmalı, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 4. 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.

İki Araç, Farklı Görevler

Ara eklemeli işlevler okunabilirlikle, kuyruk özyinelemeli işlevler ise güvenli ve verimli özyinelemeyle ilgilidir. Birbirinden bağımsız sorunları çözerler.

infix fun Int.add(o: Int) = this + o

tailrec fun sum(n: Int, acc: Int = 0): Int =
    if (n == 0) acc else sum(n - 1, acc + n)

fun main() {
    println(2 add 3)
    println(sum(10))
}

Akıcı API'ler İçin Ara Eklemeli Kullanımı Seçin

Bir çağrı nokta ve parantez olmadan daha iyi okunuyorsa, özellikle DSL'lerde ve ikili oluşturmada ara eklemeli kullanıma başvurun.

fun main() {
    val pair = "id" to 100
    println(pair)
}

Derin Özyineleme İçin tailrec Seçin

Özyinelemeli bir algoritma yığını taşıracak kadar derine inebilecekse tailrec kullanın.

tailrec fun count(n: Int, acc: Int = 0): Int =
    if (n == 0) acc else count(n - 1, acc + 1)

fun main() {
    println(count(50000))
}

Ara Eklemeli Kullanımın Ödünleri

Ara eklemeli kullanım noktalama işaretlerini kaldırır; bu da konuya yabancı okuyucular için açıklığı azaltabilir ve önceliği karmaşıklaştırabilir. Yalnızca açıkça yardımcı olduğunda kullanın.

infix fun Int.scaledBy(f: Int) = this * f

fun main() {
    println(5 scaledBy 3)
}

tailrec Kullanımının Ödünleri

Kodu kuyruk özyinelemeli hâle getirmek genellikle bir Accumulator gerektirir; bu, düz bir döngüden daha az doğrudan hissettirebilir. Etkileyiciliği basitlikle karşılaştırarak değerlendirin.

tailrec fun product(n: Int, acc: Long = 1): Long =
    if (n <= 1) acc else product(n - 1, acc * n)

fun main() {
    println(product(6))
}

Döngünün Daha Basit Olduğu Durumlar

Düz bir for veya while döngüsü kuyruk özyinelemeden daha açıksa döngüyü tercih edin. Özyineleme bir araçtır, zorunluluk değildir.

fun sumLoop(n: Int): Int {
    var total = 0
    for (i in 1..n) total += i
    return total
}

fun main() {
    println(sumLoop(10))
}

Adlandırılmış Çağrının Daha Açık Olduğu Durumlar

Ara eklemeli bir ad açıkça ikili bir ilişki belirtmiyorsa, normal bir yöntem çağrısı amacı daha iyi ifade eder.

data class Temp(val c: Int) {
    fun isWarmerThan(o: Temp) = c > o.c
}

fun main() {
    println(Temp(30).isWarmerThan(Temp(20)))
}

İkisini Birleştirme

İki özellik birbirinden bağımsızdır; tek bir program okunabilir çağrılar için ara eklemeli kullanımı, güvenli özyineleme için de tailrec'i kullanabilir.

infix fun Int.upto(n: Int) = (this..n).toList()

tailrec fun last(list: List<Int>): Int =
    if (list.size == 1) list[0] else last(list.drop(1))

fun main() {
    println(last(1 upto 5))
}

Okunabilirlik Denetim Listesi

Şunları sorun: Ara eklemeli kullanım, çağrıyı yeni başlayan biri için daha açık hâle getiriyor mu? tailrec gerçek bir taşma riskini önlüyor mu? Yanıt hayırsa düz işlevleri ve döngüleri tercih edin.

fun main() {
    val r = (1..5).sum()
    println(r)
}

Performans Notu

tailrec, sabit miktarda yığın alanıyla döngü benzeri performans sağlar. Ara eklemeli kullanımın çalışma zamanında maliyeti yoktur; tamamen sözdizimseldir.

tailrec fun pow(base: Int, exp: Int, acc: Long = 1): Long =
    if (exp == 0) acc else pow(base, exp - 1, acc * base)

fun main() {
    println(pow(2, 10))
}

Karar Özeti

Ara eklemeli kullanım: akıcı, tek bağımsız değişkenli ikili biçimli çağrılar. tailrec: güvenli biçimde ölçeklenmesi gereken özyineleme. Hiçbiri varsayılan değildir; ikisi de bilinçli seçimlerdir.

infix fun String.joinWith(o: String) = "$this-$o"

fun main() {
    println("a" joinWith "b")
}

Hızlı Sınama

Her özelliğin ne zaman kullanılacağı konusundaki anlayışınızı sınayın.

Özet

her birinin ne zaman kullanılacağını öğrendiniz:

  • Akıcı, okunabilir ikili biçimli çağrılar ve DSL'ler için infix kullanın.
  • Yığın taşması olmadan ölçeklenmesi gereken özyineleme için tailrec kullanın.
  • Daha açık olduklarında düz döngüleri veya adlandırılmış işlevleri tercih edin.
  • İki özellik birbirinden bağımsızdır ve birlikte kullanılabilir.
infix fun Int.by(o: Int) = this * o
tailrec fun dec(n: Int): Int = if (n == 0) 0 else dec(n - 1)

fun main() {
    println(3 by 4)
    println(dec(1000))
}

Sıkça Sorulan Sorular

“Her Birini Ne Zaman Kullanmalı” dersi ücretsiz mi?

Evet — “Her Birini Ne Zaman Kullanmalı” 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.

“Her Birini Ne Zaman Kullanmalı” dersinde ne öğreneceğim?

Ödünleşimler 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 4. dersidir.

“Her Birini Ne Zaman Kullanmalı” 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. Infix İşlevleri
  2. DSL Benzeri API'ler Oluşturma
  3. tailrec İşlevleri
  4. Her Birini Ne Zaman Kullanmalı
← Kotlin Academy Sayfasına Dön