Nullable ve Nullable Olmayan Türler
? tür belirtecini öğrenin.
Nullable ve Nullable Olmayan Türler, CoddyKit'te ücretsiz bir Android 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, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.
Null Güvenliği Neden Önemlidir?
Android uygulamalarındaki birçok çökme tek bir hatadan kaynaklanır: aslında eksik olan bir değeri kullanmak. Diğer dillerde bu durum, çalışma zamanında korkulan NullPointerException hatasına dönüşür.
Kotlin bu sorunu derleme zamanında ele alır. Tür sistemi, hangi değerlerin null olabileceğini ve hangilerinin asla olamayacağını takip eder. Bu ders, bu sistemin temelini tanıtır.
Null Olmayan Türler
Varsayılan olarak bir Kotlin türü null içeremez. Bir String her zaman gerçek bir dizeyi gösterir.
Ona null atamaya çalışırsanız kod derlenmez bile. Güvenli varsayılan budur.
fun main() {
val name: String = "Ada"
println(name.length)
}Null Reddedilir
null değerini null olmayan bir türe yerleştirmeye çalıştığınızda ne olduğuna dikkat edin.
Derleyici sizi hemen durdurur. Gizli bir hatayla çalışma zamanına ulaşmazsınız.
val name: String = null // Compile error:
// Null can not be a value of a non-null type String? ile Null Olabilen Türler
Bazen bir değer gerçekten eksik olabilir; örneğin bir kullanıcının isteğe bağlı ikinci adı. Türün sonuna ? ekleyerek bunu belirtirsiniz.
Bir String?, gerçek bir dize veya null içerebilir. Soru işareti, türün null olabileceğini belirtir.
fun main() {
val middleName: String? = null
println(middleName)
}İki Farklı Tür
String ve String? aynı tür değildir. İkincisi, null değerini de içeren daha geniş bir türdür.
Derleyicinin sizi korumasını sağlayan ayrım budur. null değerinin tam olarak nerede ortaya çıkabileceğini bilir.
val sure: String = "hello"
val maybe: String? = "hello"
// maybe could later be null; sure never canNull Olabilen Türü Doğrudan Kullanamazsınız
Derleyici, null olabilen bir değer üzerinde önce kontrol yapmadan bir yöntem çağırmanıza izin vermez.
middleName null olabileceği için üzerinde .length çağırmak bir derleme hatasıdır. Null durumunu ele almalısınız.
val middleName: String? = null
println(middleName.length)
// Error: only safe (?.) or non-null (!!) calls allowedif ile Kontrol Etme
Null olabilen bir değeri kullanmanın en basit yolu onu bir if koşuluyla kontrol etmektir.
Null olmadığını kanıtladığınız dalın içinde Kotlin, değeri null olmayan bir türe akıllı biçimde dönüştürür; bu nedenle .length çalışır.
fun main() {
val text: String? = "Kotlin"
if (text != null) {
println(text.length)
}
}Akıllı Tür Dönüşümleri
Başarılı bir null kontrolünden sonra derleyici, o bloğun geri kalanında değerin null olmadığını hatırlar. Buna akıllı tür dönüşümü denir.
Herhangi bir dönüştürme yazmadınız. Kotlin bunu sizin için otomatik olarak takip etti.
fun describe(s: String?) {
if (s == null) return
// s is now treated as String here
println("Length is " + s.length)
}İşlev Parametreleri
Bir parametrenin null olup olamayacağı, işlevin sözleşmesinin bir parçasıdır. Null olmayan bir parametre, çağıranlara hiçbir zaman null almayacağını garanti eder.
Null olabilen bir parametre ise eksik girdinin beklendiğini ve ele alındığını belirtir.
fun greet(name: String) {
println("Hi, " + name)
}
// greet(null) would not compileDönüş Türleri Null Olabilir
Bir işlev, hiçbir şey bulunamadığını belirtmek için null döndürebilir. Dönüş türünü ? ile işaretleyin.
Böylece çağıranlar, sonucu kullanmadan önce kontrol etmeleri gerektiğini bilir.
fun firstChar(s: String): Char? {
if (s.isEmpty()) return null
return s[0]
}Varsayılan Olarak Null Olmayanı Seçin
İyi bir kural: null olmayan türleri tercih edin. ? işaretini yalnızca bir değer gerçekten mevcut olmayabiliyorsa ekleyin.
Bu, kodunuzu tutarlı tutar. Null olabilen türleriniz ne kadar az olursa ileride o kadar az null kontrolü yapmanız gerekir.
// Prefer this:
val score: Int = 0
// Over this, unless null is meaningful:
val maybeScore: Int? = nullHızlı Kontrol
Null olabilen ve null olamayan türler hakkındaki anlayışınızı test edin.
Özet
Kotlin türleri varsayılan olarak null olamaz ve derleme zamanında null değerini reddeder. Bir değer eksik olabiliyorsa türü null olabilir yapmak için ? ekleyin.
Null olabilen bir değeri doğrudan kullanamazsınız. Null kontrolü, değeri null olmayan türe akıllı biçimde dönüştürür ve onu güvenle kullanmanızı sağlar. Sırada, null olabilen değerleri ele almanın daha kısa yollarını öğreneceksiniz.
Sıkça Sorulan Sorular
“Nullable ve Nullable Olmayan Türler” dersi ücretsiz mi?
Evet — “Nullable ve Nullable Olmayan Türler” 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 Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.
“Nullable ve Nullable Olmayan Türler” dersinde ne öğreneceğim?
? tür belirtecini öğrenin. Android 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.
Android Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Android 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.
“Nullable ve Nullable Olmayan Türler” 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 Android Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Android 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
- Nullable ve Nullable Olmayan Türler
- Güvenli Çağrılar ve Elvis
- let, also ve Kapsam İşlevleri
- NullPointerExceptions Önleme