Option ve Nullable: Hangisi Ne Zaman Kullanılır
Arrow'un Option türünü Kotlin'in null olabilir türleriyle karşılaştırın ve uygun olanı seçin.
Option ve Nullable: Hangisi Ne Zaman Kullanılır, 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.
Yokluğu Temsil Etmenin İki Yolu
Kotlin'de Boş Değer Alabilen Türler
Kotlin'deki T?, çoğu Kotlin kodunda yokluğu ifade etmek için deyimsel tercihtir. Derleyici boş değer denetimlerini zorunlu kılar, güvenli çağrı işleci ?. çağrıları sorunsuzca zincirler ve ?: "default" yedek değerleri kısa ve öz biçimde sağlar:
val name: String? = findUser(id)?.name
val display = name ?: "Anonymous"Arrow'un Option<A> Türü
Option, boş değer kavramını map, flatMap, filter, fold ve daha fazlasına sahip uygun bir cebirsel tür içinde sarmalar. Arrow'un işlevsel işlem hattı tarzıyla doğal biçimde bütünleşir:
import arrow.core.Option
import arrow.core.Some
import arrow.core.None
import arrow.core.toOption
val opt: Option<String> = "hello".toOption() // Some("hello")
val absent: Option<String> = NoneOption ile Boş Değer Alabilen Tür Arasında Dönüştürme
Serbestçe dönüştürün: value?.toOption(), boş değer alabilen bir değeri Option içine sarar; option.getOrNull(), değeri veya boş değeri çıkarır; option.getOrElse { default } bir yedek değer sağlar:
val opt: Option<String> = nullableString.toOption()
val back: String? = opt.getOrNull()Option Üzerinde map ve flatMap
map { }, Some değerini dönüştürür (None durumunu değiştirmeden döndürür). flatMap { }, kendileri de Option döndüren işlemleri zincirler:
val length: Option<Int> = "hello".toOption().map { it.length } // Some(5)
val noneLength: Option<Int> = (null as String?).toOption().map { it.length } // NoneOption Üzerinde filter
filter { predicate }, koşul ifadesi yanlışsa bir Some değerini None durumuna dönüştürür:
val positiveAge: Option<Int> = 25.toOption().filter { it > 0 } // Some(25)
val rejectedAge: Option<Int> = (-1).toOption().filter { it > 0 } // Nonefold: Option'ı Tüketme
fold(ifEmpty, ifSome), desen eşleme kullanmadan her iki durumu tek bir ifadede ele alır:
val result: String = someOption.fold(
ifEmpty = { "Nothing here" },
ifSome = { value -> "Got: $value" }
)Boş Değer Alabilen T? Ne Zaman Tercih Edilmeli
Aşağıdaki durumlarda Kotlin'in boş değer alabilen türünü (T?) tercih edin:
- Başkalarının okuyacağı deyimsel Kotlin kodu yazıyorsanız
- Boş değere güvenli işleç zincirlerine (
?.,?:) ihtiyacınız varsa - Tür, Arrow kullanmayan API'lerde kullanılıyorsa
- Performans kritikse (kutulama yükü yoktur)
Option<A> Ne Zaman Tercih Edilmeli
Aşağıdaki durumlarda Option türünü tercih edin:
- Arrow'un işlevsel işlem hattını (
map,flatMap) zaten kullanıyorsanız - İsteğe bağlı değerleri
EitherveyaRaiseile birleştirmek istiyorsanız - Genel bir işlevsel bağlamda yokluğu açıkça belirtmek istiyorsanız
- Çağıranları Kotlin kullanmayabilecek bir kütüphane geliştiriyorsanız
either { } İçinde Option
Arrow'un either { } bloğu içinde, önce Either'a dönüştürerek bir Option üzerinde .bind() çağrısı yapabilirsiniz:
fun findUserOpt(id: Long): Option<User> = TODO()
fun getUser(id: Long): Either<UserError, User> = either {
findUserOpt(id)
.toEither { UserError.NotFound }
.bind()
}Seçenek Karşı Örüntüsü
Yalnızca mevcut olduğu için her yerde Option kullanmayın. Kotlin'de çoğu uygulama kodunda String?, Option'den daha açıktır. Option türünü, işlevsel işleçleri gerçekten değer kattığında kullanın.
Kısa Kontrol
Arrow'un seçenek türünde None.map { it.length } ne döndürür?
Özet: Seçenek ve Boş Değer İçerebilen Türler
Temel çıkarımlar:
- Kotlin
T?: çoğu kod için deyimsel kullanımdır; derleyici tarafından zorunlu kılınır;?.ve?:kullanır - Arrow
Option: işlevsel işleçlere sahip cebirsel türdür (map,flatMap,fold,filter) .toOption()ve.getOrNull()ile dönüştürün- Deyimsel Kotlin için
T?kullanmayı, Arrow ile işlevsel işlem hatlarını birleştirirken iseOptionkullanmayı tercih edin
Sıkça Sorulan Sorular
“Option ve Nullable: Hangisi Ne Zaman Kullanılır” dersi ücretsiz mi?
Evet — “Option ve Nullable: Hangisi Ne Zaman Kullanılır” 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.
“Option ve Nullable: Hangisi Ne Zaman Kullanılır” dersinde ne öğreneceğim?
Arrow'un Option türünü Kotlin'in null olabilir türleriyle karşılaştırın ve uygun olanı seçin. 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.
“Option ve Nullable: Hangisi Ne Zaman Kullanılır” 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
- Either : İstisnasız Türlendirilmiş Hata İşleme
- Arrow Raise DSL: Türü Belirlenmiş Hataları Birleştirme
- Option ve Nullable: Hangisi Ne Zaman Kullanılır
- Arrow'un Temel Türleriyle İşlevsel Alan Modellemesi