Akıllı Dönüşümler
Denetimlerden sonra otomatik tür dönüşümü
Akıllı Dönüşümler, 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.
Akıllı Tür Dönüşümleri Nedir
Bir değerin türünü denetledikten sonra Kotlin bu bilgiyi hatırlar. Denetlenen bloğun içinde değeri otomatik olarak daraltılmış türüyle ele alır.
Bu özelliğe akıllı tür dönüşümü denir ve elle tür dönüşümü yapma gereğini ortadan kaldırır.
is Sonrasında Akıllı Tür Dönüşümü
Bir is denetimi başarılı olduğunda, tür dönüşümü yazmadan değeri o türde kullanabilirsiniz.
Derleyici tür dönüşümünü sizin için ekler.
fun describe(x: Any) {
if (x is String) {
println(x.length) // x is smart-cast to String
}
}
fun main() {
describe("hello")
}Boş Değer Denetiminden Sonra Akıllı Tür Dönüşümü
Akıllı tür dönüşümleri boş olabilirlik için de çalışır. Bir değerin boş olmadığını doğruladıktan sonra değer, boş olmayan türde ele alınır.
fun length(text: String?): Int {
if (text != null) {
return text.length // smart-cast to non-null String
}
return 0
}
fun main() {
println(length("abc"))
println(length(null))
}when İçinde Akıllı Tür Dönüşümleri
when içindeki tür denetimleri de her dalda akıllı tür dönüşümlerini etkinleştirir.
Bu, birden çok olası türü ele almanın Kotlin'e özgü yoludur.
fun area(shape: Any): Double = when (shape) {
is Int -> shape.toDouble()
is String -> shape.length.toDouble()
else -> 0.0
}
fun main() {
println(area(5))
println(area("hello"))
}Erken Döndürmeyle Akıllı Tür Dönüşümü
Bir değer boş olduğunda erken dönerseniz derleyici bundan sonra değerin boş olmadığını bilir.
İşlevin geri kalanı değeri güvenli biçimde kullanır.
fun process(text: String?) {
if (text == null) return
println(text.uppercase()) // smart-cast here
}
fun main() {
process("data")
process(null)
}Elvis ile Döndürmede Akıllı Tür Dönüşümü
Elvis işleçini return ile birleştirmek, kalan kod için de akıllı tür dönüşümünü etkinleştirir.
fun process(text: String?) {
val safe = text ?: return
println(safe.length) // safe is non-null
}
fun main() {
process("hi")
process(null)
}Birleşik Koşullar
Akıllı tür dönüşümleri, && kullanılarak birleştirilen koşulların mantığına uyar.
Soldaki tür denetiminden sonra sağ taraf daraltılmış türü zaten görür.
fun check(x: Any) {
if (x is String && x.length > 3) {
println("long string")
} else {
println("other")
}
}
fun main() {
check("hello")
check(2)
}Akıllı Tür Dönüşümleri Ne Zaman Başarısız Olur
Akıllı tür dönüşümleri, denetim ile kullanım arasında değerin değişmeyeceğine ilişkin bir güvence gerektirir.
Eşzamanlı olarak değişebilecek değiştirilebilir bir var akıllı tür dönüşümüne izin vermeyebilir. Güvenilir akıllı tür dönüşümleri için val kullanmayı tercih edin.
fun main() {
val text: String? = "stable"
if (text != null) {
println(text.length) // val smart-casts cleanly
}
}Yerel val En Güvenlisidir
Bir değeri yerel bir val içine kopyalamak, akıllı tür dönüşümlerini güvenilir hâle getirir.
Bu, boş olabilir özelliklerle çalışırken yaygın bir kalıptır.
class Box(val content: String?)
fun main() {
val box = Box("item")
val c = box.content
if (c != null) {
println(c.uppercase())
}
}Akıllı ve Açık Tür Dönüşümleri
Akıllı tür dönüşümleri, çoğu açık as tür dönüşümünün yerini alır. Daha güvenlidirler; çünkü yalnızca türün kanıtlandığı yerlerde uygulanırlar.
Sırada açık is ve as kullanımlarını öğreneceksiniz.
fun main() {
val x: Any = "text"
if (x is String) {
// no need for (x as String)
println(x.reversed())
}
}Bir Araya Getirme
Akıllı tür dönüşümleri, derleyicinin türleri otomatik olarak daraltmasını sağlar:
isdenetimlerinden sonra → o türe dönüştürülür- Boşluk denetimlerinden sonra → boş olmayan türe dönüştürülür
if,wheniçinde ve erken döndürmelerden sonra çalışır- En güvenilir biçimde
valile çalışır
fun render(x: Any): String {
if (x is Int) return "number " + x
if (x is String) return "text " + x.uppercase()
return "unknown"
}
fun main() {
println(render(7))
println(render("go"))
}Kısa Sınama
Akıllı tür dönüşümleri konusundaki anlayışınızı sınayın.
Özet
Akıllı tür dönüşümleri hakkında bilgi edindiniz:
- Tür ve boşluk denetimleri türü otomatik olarak daraltır
if,wheniçinde ve erken döndürmelerden sonra çalışırlarval, en güvenilir akıllı tür dönüşümlerini sağlar
Sırada is ve as işleçlerini doğrudan inceleyeceksiniz.
Sıkça Sorulan Sorular
“Akıllı Dönüşümler” dersi ücretsiz mi?
Evet — “Akıllı Dönüşümler” 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.
“Akıllı Dönüşümler” dersinde ne öğreneceğim?
Denetimlerden sonra otomatik tür dönüşümü 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.
“Akıllı Dönüşümler” 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
- İfade Olarak when
- Akıllı Dönüşümler
- is ve as İşleçleri
- Tüm Durumları Kapsayan when