CodeBlanks Logo Icon CodeBlanks

Type constraint

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

Main.kt
// 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

Main.kt
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&lt;T&gt;</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

Soru
fun <T : Comparable<____>> max(a: T, b: T): T {
    return if (a > b) a else b
}
Cevap
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.

Orta seviye bölümündeki tüm dersler