Genel Tür Kısıtlamaları
Tür parametrelerini sınırlandırın
Genel Tür Kısıtlamaları, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 4. 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.
Tür Parametrelerini Kısıtlama
Bazen bir generic yalnızca belirli türleri kabul etmelidir; örneğin karşılaştırılabilen veya bir temel türü alt tür olarak kullanan türleri. Generic kısıtlar, bir tür parametresi için üst sınır belirler.
Varsayılan Üst Sınır
Bir kısıtlama olmadan tür parametresinin üst sınırı Any? olur; bu nedenle null olabilenler de dâhil her türü kabul eder. Yalnızca null olamayan türlere izin vermek için sınırı Any olarak belirleyin.
fun <T : Any> requireNonNull(value: T): T {
return value
}
fun main() {
println(requireNonNull(42))
}Tek Bir Üst Sınır
T'nin Bound türünün alt türü olmasını zorunlu kılmak için T : Bound kullanın. Böylece işlev içinde üst sınırın üyelerini çağırabilirsiniz.
fun <T : Number> sumDoubled(a: T, b: T): Double {
return a.toDouble() * 2 + b.toDouble() * 2
}
fun main() {
println(sumDoubled(3, 4))
println(sumDoubled(1.5, 2.5))
}Comparable Üst Sınırı
Yaygın bir üst sınır, öğeleri <, > veya compareTo ile karşılaştırmanızı sağlayan Comparable<T> türüdür.
fun <T : Comparable<T>> maxOf2(a: T, b: T): T {
return if (a > b) a else b
}
fun main() {
println(maxOf2(3, 9))
println(maxOf2("apple", "banana"))
}Üst Sınır Üyelerini Çağırma
Kısıtlanmış bir generic içinde derleyici, T'nin üst sınırın programlama arayüzüne sahip olduğunu bilir; bu nedenle tür dönüştürmesi yapmadan bu yöntemleri doğrudan çağırabilirsiniz.
fun <T : CharSequence> describe(value: T): String {
return "Length is ${value.length}"
}
fun main() {
println(describe("hello"))
println(describe(StringBuilder("hi")))
}where ile Birden Çok Üst Sınır
Birden fazla üst sınır için where yan tümcesini kullanın. T, listelenen kısıtlamaların tümünü karşılamalıdır: ALL.
fun <T> copyWhenValid(value: T): T
where T : CharSequence, T : Comparable<T> {
return value
}
fun main() {
println(copyWhenValid("text"))
}Sınıflarda Üst Sınırlar
Kısıtlamalar generic sınıflarda da çalışır ve sınıfın hangi türlerle örneklendirilebileceğini sınırlar.
class NumberBox<T : Number>(val value: T) {
fun asDouble(): Double = value.toDouble()
}
fun main() {
val box = NumberBox(10)
println(box.asDouble())
}Kısıtlama İşlemleri Etkinleştirir
Bir kısıtlamanın temel amacı işlemlerin kullanılmasını sağlamaktır. T : Number olmadan toDouble() çağıramazdınız; üst sınır, bu yöntemin var olduğunu garanti eder.
Uygulamada Null Olamayan Üst Sınır
Any ile sınırlandırmak, null olabilen bağımsız değişkenleri derleme zamanında reddeder; bu, generic türlerin null olmamasını zorunlu kılmak için kullanışlıdır.
fun <T : Any> firstNonNull(a: T, b: T): T = a
fun main() {
println(firstNonNull("x", "y"))
// firstNonNull(null, "y") would not compile
}Varyansla Birlikte Kullanma
Kısıtlamalar ve varyans farklı sorunları çözer: varyans (in/out) alt tür ilişkilerini denetlerken kısıtlamalar (: üst sınırları, where) hangi türlere izin verileceğini sınırlar. İkisi birlikte kullanılabilir.
İyi Kısıtlamalar Tasarlama
Bir kısıtlamayı yalnızca türün sağladığı bir yeteneğe ihtiyaç duyduğunuzda ekleyin. Gereğinden fazla kısıtlama yeniden kullanılabilirliği azaltır; yetersiz kısıtlama ise tür dönüştürmelerini zorunlu kılar. Kullandığınız işlemleri sağlayan en genel türe göre üst sınır belirleyin.
Kısa Kontrol
Bir tür parametresinin birden fazla üst sınırı karşılamasını nasıl zorunlu kılarsınız?
Özet
Generic kısıtlar, T : Bound (birden fazla üst sınır için where) ile üst sınırlar belirler; böylece üst sınırın işlemlerini kullanabilir ve uyumsuz türleri dışarıda bırakabilirsiniz. Any ile üst sınır belirlemek null olmamayı zorunlu kılar. Kısıtlar varyansla birlikte kullanıldığında güvenli ve ifade gücü yüksek generic türler tasarlamanızı sağlar. Böylece Generic Türler ve Varyans kursu tamamlanır.
Sıkça Sorulan Sorular
“Genel Tür Kısıtlamaları” dersi ücretsiz mi?
Evet — “Genel Tür Kısıtlamaları” 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.
“Genel Tür Kısıtlamaları” dersinde ne öğreneceğim?
Tür parametrelerini sınırlandırın 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 4. dersidir.
“Genel Tür Kısıtlamaları” 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
- Genel İşlevler ve Sınıflar
- Bildirim Yeri Değişkenliği
- Kullanım Yeri Değişkenliği
- Genel Tür Kısıtlamaları