let, also ve Kapsam İşlevleri
Nullable değerlerle çalışın.
let, also ve Kapsam İşlevleri, CoddyKit'te ücretsiz bir Android 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, 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.
Kapsam İşlevleri Nedir?
Kapsam işlevleri, bir nesnenin bağlamında bir kod bloğunu çalıştırmanızı sağlar. Özellikle null olabilen değerlerle çalışırken kodu daha kısa ve anlaşılır hâle getirir.
Bu derste, null güvenliği için en kullanışlı iki işlev olan let ve also ile bunların güvenli çağrı işleciyle ilişkisine odaklanacağız.
let İşlevi
let, bir bloğu çalıştırır ve nesneyi it olarak bloğa aktarır. Bloğun döndürdüğü değeri döndürür.
Bir değeri dönüştürmek veya geçici bir ada kapsam belirlemek için kullanışlıdır.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // prints: 6
}Null Güvenliği için let
Bir değer null olmadığında bloğu çalıştırmak için ?. ile let işlevini birleştirin. Değer it olarak aktarılır ve blok bir kez çalıştırılır.
Değer null ise blok tamamen atlanır.
fun main() {
val name: String? = "Ada"
name?.let {
println("Hello, " + it)
}
}Null Olduğunda Atlanır
Alıcı null olduğunda ?.let hiçbir işlem yapmaz. Blok hiç çalıştırılmaz.
name null olduğu için bu program hiçbir şey yazdırmaz.
fun main() {
val name: String? = null
name?.let {
println("Hello, " + it)
}
}it Adını Değiştirme
it yerine parametreye daha açıklayıcı bir ad verebilirsiniz. Bu, uzun bloklarda okunabilirliği artırır.
Parametreye açıkça ad vermek için ok işaretini kullanın.
val name: String? = "Bo"
name?.let { value ->
println(value.uppercase())
}also İşlevi
also da nesneyi it olarak aktarır; ancak bloğun sonucu yerine özgün nesneyi döndürür.
Değeri bir zincir içinde değiştirmeden günlük kaydı tutmak gibi yan etkiler için oldukça kullanışlıdır.
fun main() {
val n = 5.also { println("got " + it) }
println(n) // prints: 5
}let ve also: Döndürülen Değer
Temel fark şudur: let bloğun sonucunu, also ise özgün nesneyi döndürür.
Dönüştürmek istediğinizde let işlevini, değeri değiştirmeden incelemek istediğinizde also işlevini seçin.
val a = "hi".let { it.length } // a = 2 (Int)
val b = "hi".also { it.length } // b = "hi" (String)Günlük Kaydı için also
also nesneyi döndürdüğü için bir değeri akışın ortasında incelemek üzere zincire eklenebilir.
Burada, null olabilen bir değeri yalnızca mevcutsa günlük kaydına yazıyor, ardından onu kullanmaya devam ediyoruz.
fun main() {
val token: String? = "abc"
val result = token?.also { println("token: " + it) }
println(result)
}Elvis ile let
Değer null olduğunda alternatif bir seçenek sunmak için ?.let işlevini Elvis işleciyle birlikte kullanın.
Değer mevcutsa blok bir sonuç üretir; Elvis tarafı null durumunu ele alır.
fun main() {
val raw: String? = null
val out = raw?.let { it.trim() } ?: "empty"
println(out) // prints: empty
}Kapsam İşlevi Seçme
Null güvenliği için, null olmayan bir değeri bir blok içinde dönüştürmek veya kullanmak istediğinizde let işlevini seçin. Bir yan etki oluşturmak, ancak özgün nesneyi korumak istediğinizde also işlevini seçin.
Her ikisi de null kaynaklı çökmeleri önlemek için güvenli çağrı işleciyle doğal biçimde birlikte kullanılabilir.
user?.let { save(it) } // transform/use
user?.also { log(it) } // side effect, keep userBirleşik Bir Örnek
Bu program bir ileti oluşturmak için ?.let işlevini, alternatif değer sağlamak için de Elvis işleciyi kullanır. Null güvenli Kotlin kullanımının günlük akışını gösterir.
Açık null denetimleri bulunmamasına rağmen tamamen güvenlidir.
fun main() {
val city: String? = "Goreme"
val label = city?.let { "City: " + it } ?: "Unknown"
println(label)
}Hızlı Denetim
let ve also hakkındaki anlayışınızı sınayın.
Özet
Kapsam işlevleri, bir nesnenin bağlamında bir blok çalıştırır. let nesneyi it olarak aktarır ve blok sonucunu döndürür; also ise it değerini aktarır ve özgün nesneyi döndürür.
?.let ile bir değer üzerinde yalnızca null olmadığında işlem yaparsınız. Sırada, bu fikirleri bir araya getirerek NullPointerExceptions durumlarını tamamen önleyeceksiniz.
Sıkça Sorulan Sorular
“let, also ve Kapsam İşlevleri” dersi ücretsiz mi?
Evet — “let, also ve Kapsam İşlevleri” 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.
“let, also ve Kapsam İşlevleri” dersinde ne öğreneceğim?
Nullable değerlerle çalışın. 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 3. dersidir.
“let, also ve Kapsam İşlevleri” 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