Nullable ve Non-Null Türler
Tür sisteminin temelleri
Nullable ve Non-Null Türler, 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.
Null güvenliği neden önemlidir
Kötü şöhretli NullPointerException, sayısız programın çökmesine neden olmuştur. Kotlin, null olabilirliği tür sisteminin bir parçası hâline getirerek bu sorunun üzerine doğrudan gider.
Kotlin'de derleyici, bir değerin null olup olamayacağını bilir ve sorunla karşılaşmadan önce bu olasılığı ele almanızı zorunlu kılar.
Null olmayan türler
Varsayılan olarak Kotlin'deki her tür null olamaz. String türündeki bir değişken hiçbir zaman null içeremez.
Bu güvence derleme zamanında uygulanır; böylece değeri denetim yapmadan serbestçe kullanabilirsiniz.
fun main() {
val name: String = "Alice"
println(name.length)
}Null ataması reddedilir
null değerini null olamayan bir türe yerleştirmeyi deneyin; derleyici sizi hemen durdurur.
Aşağıdaki satır derlenemez, çünkü String türü null değerini kabul etmez:
val name: String = null→ hata
fun main() {
val city: String = "Paris"
// val broken: String = null // compile error
println(city)
}Null olabilen türler
null değerine izin vermek için türün sonuna bir soru işareti ekleyin: String?.
Bu bir null olabilen türdür. Gerçek bir değer veya null içerebilir.
fun main() {
val maybeName: String? = null
println(maybeName)
}Null olabilen ve null olmayan türler
İki bildirim neredeyse aynı görünür, ancak çok farklı davranır:
val a: String→ hiçbir zaman null olmazval b: String?→ null olabilir
Tek bir ? işareti, değişkenin tüm sözleşmesini değiştirir.
fun main() {
val a: String = "hi"
val b: String? = "hi"
println(a)
println(b)
}Derleyici, null olabilen erişimleri korur
Null olabilen bir değer üzerinde doğrudan yöntem çağıramazsınız. Değer null olabileceği için derleyici bunu reddeder.
Aşağıda açıklama satırına alınan satır derlenemez:
- Bir
String?üzerindemaybe.length→ hata
fun main() {
val maybe: String? = "text"
// println(maybe.length) // compile error
println(maybe)
}Null denetimi
Null olabilen bir değeri kullanmanın basit yollarından biri açık bir if denetimidir.
if bloğunun içinde Kotlin, değerin null olmadığını bilir ve onu güvenli biçimde kullanmanıza izin verir.
fun main() {
val maybe: String? = "hello"
if (maybe != null) {
println(maybe.length)
}
}İşlev parametrelerinde null
Parametre türleri de aynı kurala uyar. String türündeki bir parametre gerçek bir değer almalıdır; String? ise null değerini kabul eder.
Bu, işlev imzalarının kabul ettiği değerleri kendi kendini açıklayacak şekilde belirtmesini sağlar.
fun greet(name: String?) {
if (name != null) {
println("Hello, " + name)
} else {
println("Hello, guest")
}
}
fun main() {
greet("Mia")
greet(null)
}Null olabilen dönüş türleri
İşlevler, bir sonucun eksik olabileceğini belirtmek için null olabilen türler döndürebilir.
Arayan kod, sonucu kullanmadan önce olası null değerini ele almak zorunda kalır.
fun firstChar(text: String?): Char? {
if (text == null || text.isEmpty()) return null
return text[0]
}
fun main() {
println(firstChar("Kotlin"))
println(firstChar(null))
}Varsayılan tür çıkarımı
Bir sabit değer atadığınızda Kotlin, null olmayan bir türü otomatik olarak çıkarır.
val n = "text"→ çıkarılan türString
Değeri null olabilir yapmak için türü ? ile açıkça belirtmeniz gerekir.
fun main() {
val n = "text" // inferred String (non-null)
val m: String? = "text" // explicit nullable
println(n.length)
println(m)
}Hepsini bir araya getirme
Tür sistemi değerleri iki açık gruba ayırır:
- Null olmayan: kullanılması her zaman güvenlidir
- Null olabilen: kullanılmadan önce ele alınmalıdır
Bu ayrım, null hatalarını çalışma zamanı çökmelerinden derleme zamanı hatalarına taşır.
fun main() {
val safe: String = "always here"
val risky: String? = null
println(safe.uppercase())
if (risky != null) println(risky.uppercase()) else println("no value")
}Kısa kontrol
Null olabilen ve null olmayan türlerle ilgili anlayışınızı sınayın.
Özet
Kotlin null güvenliğinin temelini öğrendiniz:
- Varsayılan olarak her tür null olamaz
?eklemek null olabilen bir tür oluşturur- Derleyici, null olabilen değerlere güvenli olmayan erişimleri engeller
if (x != null)denetimi, değeri güvenli biçimde kullanmanızı sağlar
Sırada, null olabilen değerlerle çalışmayı zahmetsiz hâle getiren kısa operatörleri öğreneceksiniz.
Sıkça Sorulan Sorular
“Nullable ve Non-Null Türler” dersi ücretsiz mi?
Evet — “Nullable ve Non-Null 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 Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“Nullable ve Non-Null Türler” dersinde ne öğreneceğim?
Tür sisteminin temelleri 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.
“Nullable ve Non-Null 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 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
- Nullable ve Non-Null Türler
- Güvenli Çağrılar ve Elvis
- !! İşleci
- Platform Türleri