Type constraint
- Kotlin kursu
- Orta seviye
- Ders 50/116
- 5 dk
where ve upper bound ile tür kısıtları öğrenirsin.
Type constraint
Bir type constraint, generic tür parametresini belirli bir türün alt türü olmaya zorlar. Kotlin'de T : UpperBound biçimi veya where anahtar kelimesi kullanılır.
Örnek: fun <T : Comparable<T>> max(a: T, b: T): T { return if (a > b) a else b }. Burada T : Comparable<T> kısıtı T'nin karşılaştırılabilir olmasını gerektirir. max(3, 7) geçerlidir; max(listOf(1), listOf(2)) derleme hatası verir. Type constraint, generic fonksiyonların yalnızca uygun türlerle çağrılmasını sağlar. Bu, çalışma zamanı hatalarını önler.
max fonksiyonu
Bir type constraint ile generic fonksiyonlar operatör kullanabilir. T : Comparable<T> kısıtı > operatörünü etkin kılar.
Örnek: fun <T : Comparable<T>> max(a: T, b: T): T { return if (a > b) a else b }. max(3, 7) çağrısı 7 döndürür. max("merhaba", "dünya") çağrısı alfabetik olarak büyüğü döndürür. Kısıt sayesinde > operatörü her comparable tür için çalışır. where anahtar kelimesiyle birden çok kısıt da yazılabilir.
Uygulama max generic fonksiyonu
fun <T : Comparable<T>> max(a: T, b: T): T generic fonksiyonunu tanımla; gövdesi if (a > b) a else b döndürsün. main içinde println(max(3, 7)) çağrısı yapsın.
Başlangıç kodu
// max generic fonksiyon tanımı
// karşılaştırılabilir T kısıtı ile
// main'de iki Int çağır ve yazdırÖrnek çözüm
fun <T : Comparable<T>> max(a: T, b: T): T {
return if (a > b) a else b
}
fun main() {
println(max(3, 7))
}Beklenen çıktı
7
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir generic fonksiyonda <code>T : Comparable<T></code> kısıtı ne sağlar?
- T'nin nullable olmasını
- T'nin Comparable<T> alt türü olmasını Doğru cevap
- T'nin Int olmasını
- T'nin herhangi bir tür olmasını
Açıklama: T : Comparable<T> kısıtı T'nin Comparable<T> alt türü olmasını sağlar.
2 type constraint parçalarını eşle
| Kavram | Anlamı |
|---|---|
<T : Comparable<T>> |
Tür kısıtı |
fun max(a: T, b: T) |
Fonksiyon imzası |
: T |
Dönüş türü |
a > b |
Karşılaştırma |
3 max fonksiyon kısıtını tamamla
fun <T : Comparable<____>> max(a: T, b: T): T {
return if (a > b) a else b
}
fun <T : Comparable<T>> max(a: T, b: T): T {
return if (a > b) a else b
}
Açıklama: T : Comparable<T> kısıtı T'nin karşılaştırılabilir olmasını sağlar.