0Pricing
Kotlin Academy · Ders

Satır İçi Değer Sınıfları

Ek yük olmadan sarmalayın

Satır İçi Değer Sınıfları, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 2. 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.

Sarmalama Sorunu

İlkel bir türü sınıf içinde sarmalamak tür güvenliği sağlar, ancak normalde öbekte bellek ayırma maliyeti oluşturur. Değer sınıfları, derleyici mümkün olduğunda sarmalayıcıyı ortadan kaldırırken size bu güvenliği sağlar.

Değer Sınıfı Tanımlama

Bir sınıfı, birincil kurucusunda tam olarak bir özellik bulunan @JvmInline value class olarak işaretleyin. Bu sınıf, ayrı bir tür gibi davranır.

@JvmInline
value class Password(val value: String)

fun main() {
    val p = Password("secret")
    println(p.value)
}

Ayrı Bir Tür

Tür diğer adının aksine değer sınıfı ayrı bir türdür. Password beklenen yerde yanlışlıkla ham bir String aktaramazsınız.

@JvmInline
value class Password(val value: String)

fun login(p: Password) = println("login with " + p.value)

fun main() {
    login(Password("hunter2"))
}

Sıfır Ek Yük

Çalışma zamanında derleyici genellikle temel değeri satır içine alır; böylece ek nesne ayırma işlemi yapılmaz. Çoğu kod yolunda bir Password, düz bir String olarak temsil edilir.

@JvmInline
value class Meters(val amount: Double)

fun main() {
    val d = Meters(5.0)
    println(d.amount) // stored inline as a Double
}

Yöntemler ve Özellikler

Değer sınıfları, normal sınıflar gibi işlevlere ve hesaplanan özelliklere sahip olabilir.

@JvmInline
value class Celsius(val degrees: Double) {
    fun toFahrenheit() = degrees * 9 / 5 + 32
}

fun main() {
    println(Celsius(100.0).toFahrenheit())
}

Doğrulama İçin init Blokları

Bir init bloğu, sarılan değeri oluşturulurken doğrulamanızı ve böylece her örneğin geçerli olmasını garanti etmenizi sağlar.

@JvmInline
value class Percentage(val value: Int) {
    init {
        require(value in 0..100) { "out of range" }
    }
}

fun main() {
    println(Percentage(75).value)
}

Hesaplanan Özellikler

Tek saklanan değerden türetilen hesaplanan özellikler ekleyerek mantığı türe yakın tutabilirsiniz.

@JvmInline
value class Seconds(val value: Int) {
    val asMinutes: Double get() = value / 60.0
}

fun main() {
    println(Seconds(120).asMinutes)
}

Arayüzleri Uygulama

Değer sınıfları arayüzleri uygulayabilir ve çok biçimli kullanıma olanak tanır. Not: Değer sınıfı arayüz türü olarak ele alındığında kutulama zorunlu hâle gelebilir.

interface Describable {
    fun describe(): String
}

@JvmInline
value class Money(val cents: Int) : Describable {
    override fun describe() = "$" + cents / 100.0
}

fun main() {
    println(Money(1599).describe())
}

Kutulama Ne Zaman Gerçekleşir

Değer, null değer alabilen bir tür, arayüz veya genel bir koleksiyon içinde kullanıldığında sarmalayıcı yeniden ortaya çıkar (kutulama gerçekleşir). Bu durumlarda derleyici gerçek bir nesne oluşturur; bu hâlâ doğrudur, yalnızca daha az verimlidir.

@JvmInline
value class Id(val raw: Int)

fun main() {
    val direct = Id(1)        // inlined
    val boxed: Id? = Id(2)    // boxed because nullable
    println("" + direct.raw + " " + boxed?.raw)
}

Değer Sınıfı ve Veri Sınıfı

Bir data class her zaman nesne ayırır ve birçok özellik barındırabilir. Bir value class tam olarak bir özellik barındırır ve sıfır ek yük hedefler. Tek bir değer etrafında ince, tür güvenli sarmalayıcılar için değer sınıflarını seçin.

Neden Önemli

Değer sınıfları şunları yapmanızı sağlar:

  • Aynı türdeki parametrelerin birbirine karıştırılmasını önlemek
  • Bir ilkel değere doğrulama eklemek
  • Çalışma zamanında genellikle hiçbir maliyet ödememek

Tür diğer adlarının yetersiz kaldığı yerlerde değer sınıfları, tür güvenli bir çözümdür.

Kısa Bir Kontrol

Satır içi değer sınıflarını ne kadar anladığınızı sınayın.

Özet

Satır içi değer sınıflarını öğrendiniz:

  • Tek özellik içeren @JvmInline value class ile tanımlanırlar
  • Genellikle sıfır ek yüke sahip ayrı bir türdür
  • Yöntemleri, hesaplanan özellikleri ve init doğrulamasını desteklerler
  • Değer null alabilen, genel veya arayüz olarak kullanıldığında kutulama gerçekleşir

Sırada: gerçek dünya kullanım alanları.

Sıkça Sorulan Sorular

“Satır İçi Değer Sınıfları” dersi ücretsiz mi?

Evet — “Satır İçi Değer 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.

“Satır İçi Değer Sınıfları” dersinde ne öğreneceğim?

Ek yük olmadan sarmalayı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 2. dersidir.

“Satır İçi Değer 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. Tür Takma Adları
  2. Satır İçi Değer Sınıfları
  3. Kullanım Alanları
  4. Sınırlamalar
← Kotlin Academy Sayfasına Dön