Sobes.tech
Middle

Ümumi tiplər (Generics) nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Genel tiplər (Generics) sinifləri, interfeysləri və metodları tip parametrlərindən istifadə etməklə müəyyən etməyə imkan verir. Bu, kodun elastikliyini, yenidən istifadə edilə bilməsini və tip təhlükəsizliyini artırır, müxtəlif məlumat tipləri ilə işləməyə imkan verir və statik tip yoxlamasını itirmir.

Əsas üstünlüklər:

  • Tip təhlükəsizliyi: Kompilyator, tipləri tərtib zamanı yoxlayır və uyğunsuz tiplərlə əlaqəli icra zamanı səhvlərin qarşısını alır.
  • Yenidən istifadə: Eyni kod müxtəlif məlumat tipləri ilə istifadə oluna bilər, bu da kod təkrarlamasını azaldır.
  • Performans: Bəzi dillərdə (məsələn, C#) ümumi tiplər müəyyən bir tip nəzərə alınmaqla həyata keçirilir, bu da Object istifadə ilə müqayisədə performansı artıra bilər.

İstifadə nümunələri:

  • Kolleksiyalar: Element tiplərinə parametrizə olunmuş siyahılar, lüğətlər, topluslar.
  • Metodlar: Müəyyən bir interfeysi həyata keçirən hər hansı məlumat tipləri ilə işləyən metodlar.
  • Siniflər: Tip parametrləri ilə işləyən qablaşdırıcılar, fabriklər.

C# nümunəsi:

// Ümumi siyahı
List<string> adlar = new List<string>();
adlar.Add("Alice");
adlar.Add("Bob");

// Ümumi metod
public T IlkElementiAl<T>(List<T> siyahı)
{
    if (siyahı != null && siyahı.Count > 0)
    {
        return siyahı[0];
    }
    return default(T); // T tipi üçün standart dəyər qaytarır
}

Java nümunəsi:

// Ümumi siyahı
List<String> adlar = new ArrayList<>();
adlar.add("Alice");
adlar.add("Bob");

// Ümumi metod
public <T> T ilkElementiAl(List<T> siyahı) {
    if (siyahı != null && !siyahı.isEmpty()) {
        return siyahı.get(0);
    }
    return null; // Referans tiplər üçün null qaytarır
}

Python nümunəsi (tip göstəricisi):

from typing import List, TypeVar

T = TypeVar('T')

def ilkElementiAl(məlumatlar: List[T]) -> T | None:
    # Funksiya hər hansı bir siyahı ilə işləyə bilər və element qaytara bilər
    if məlumatlar:
        return məlumatlar[0]
    return None

adlar: List[str] = ["Alice", "Bob"]
birinci_ad = ilkElementiAl(adlar) # IDE, bunun str olduğunu başa düşür

Bəzi dillərdə (Java), ümumi tiplər "erasure" (silinmə) istifadə edir, burada parametr tipinin məlumatı tərtib zamanı silinir. Bu, bəzi məhdudiyyətlərə səbəb ola bilər. Digər dillərdə (C#, Go), tip məlumatı işləmə zamanı saxlanılır.

Genel tiplər, təmiz, təhlükəsiz və yenidən istifadə edilə bilən kod yazmaq üçün əsas vasitədir.