Kotlin Academy · Ders

Genel İşlevler ve Sınıflar

Türleri parametreleştirin

1. ders / 413 adım

Genel İşlevler ve Sınıflar, 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.

Jenerikler Nedir?

Jenerikler, tam tür güvenliğini korurken birçok türle çalışan kod yazmanızı sağlar. Belirli bir türü sabitlemek yerine, yer tutucu olarak bir tür parametresi (çoğunlukla T) kullanırsınız.

Jenerik Bir İşlev

Jenerik bir işlev, tür parametresini işlev adından önce köşeli parantezler içinde bildirir. Burada T herhangi bir tür olabilir.

fun <T> identity(value: T): T {
    return value
}

fun main() {
    println(identity(42))
    println(identity("hello"))
}

Tür Çıkarımı

Türü nadiren açıkça belirtirsiniz; derleyici, T türünü bağımsız değişkenlerden çıkarır. Gerektiğinde yine de identity<Int>(42) şeklinde yazabilirsiniz.

fun <T> firstOf(a: T, b: T): T = a

fun main() {
    val x = firstOf(10, 20)
    val y = firstOf("a", "b")
    println("$x $y")
}

Birden Çok Tür Parametresi

Bir işlevde, birbiriyle ilişkili olmayan tür çiftleriyle çalışmak için yararlı olan birden çok tür parametresi bulunabilir.

fun <A, B> makePair(first: A, second: B): Pair<A, B> {
    return Pair(first, second)
}

fun main() {
    val p = makePair("age", 30)
    println(p)
}

Jenerik Bir Sınıf

Sınıflar da jenerik olabilir. Tür parametresi, sınıf adından sonra bildirilir ve özellikler ile işlevlerde kullanılabilir.

class Box<T>(val value: T) {
    fun get(): T = value
}

fun main() {
    val intBox = Box(123)
    val strBox = Box("Kotlin")
    println(intBox.get())
    println(strBox.get())
}

Davranışa Sahip Jenerik Sınıf

Jenerik sınıflar, değiştirilebilir durum tutabilir ve basit bir kapsayıcı gibi tür parametresi üzerinde işlem yapabilir.

class Stack<T> {
    private val items = mutableListOf<T>()
    fun push(item: T) { items.add(item) }
    fun pop(): T = items.removeAt(items.size - 1)
    fun isEmpty() = items.isEmpty()
}

fun main() {
    val stack = Stack<Int>()
    stack.push(1)
    stack.push(2)
    println(stack.pop())
}

Jenerik Arayüzler

Arayüzler de tür parametreleri bildirebilir; böylece somut türü uygulamalar seçebilir.

interface Container<T> {
    fun item(): T
}

class StringContainer : Container<String> {
    override fun item(): String = "fixed"
}

fun main() {
    println(StringContainer().item())
}

Neden Yalnızca Any Kullanılmamalı?

Değerleri Any olarak saklayabilirsiniz, ancak tür bilgilerini kaybeder ve tür dönüştürmeleri yapmanız gerekirdi. Jenerikler tam türü korur; böylece derleyici hataları yakalar ve tür dönüştürmeye gerek kalmaz.

fun main() {
    val box: Box<String> = Box("text")
    val s: String = box.get()
    println(s.uppercase())
}

class Box<T>(val value: T) { fun get(): T = value }

Jenerik Uzantı İşlevleri

Uzantı işlevleri jenerik olabilir; bu da tüm türlerde kullanılabilen yeniden kullanılabilir yardımcı programlar oluşturmanızı sağlar.

fun <T> T.printAndReturn(): T {
    println("Value: $this")
    return this
}

fun main() {
    val x = 5.printAndReturn()
    "hi".printAndReturn()
    println(x)
}

Adlandırma Kuralları

Geleneksel olarak, tür parametreleri tek bir büyük harfle adlandırılır: jenerik bir tür için T, bir öğe için E, eşleme anahtarları ve değerleri için K ve V, sonuç için R.

Her Yerde Jenerikler

Kotlin'in standart kütüphanesi jenerikler üzerine kuruludur: List<T>, Map<K, V>, Pair<A, B>. Jenerikleri anlamak, bu türleri güvenle okumanıza ve kullanmanıza yardımcı olur.

Kısa Kontrol

Jeneriklerin Any kullanmaya kıyasla temel yararı nedir?

Özet

Jenerikler, yeniden kullanılabilir ve tür güvenli işlevler, sınıflar ve arayüzler yazmak için T gibi tür parametrelerini kullanır. Derleyici türleri çıkarır ve güvenliği zorunlu kılar; böylece tür dönüştürmelerinden kaçınılır. Sırada, bildirim yeri değişkenliğiyle in ve out kullanarak jenerik türlerin birbiriyle ilişkisini denetleyeceksiniz.

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

“Genel İşlevler ve Sınıflar” dersi ücretsiz mi?

Evet — “Genel İşlevler ve Sınıflar” 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.

“Genel İşlevler ve Sınıflar” dersinde ne öğreneceğim?

Türleri parametreleştirin 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.

“Genel İşlevler ve Sınıflar” 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. Genel İşlevler ve Sınıflar
  2. Bildirim Yeri Değişkenliği
  3. Kullanım Yeri Değişkenliği
  4. Genel Tür Kısıtlamaları
← Kotlin Academy Sayfasına Dön