Generyklar nima?
sobes.tech AI
AIdan javob
Programmada generiklər, müxtəlif məlumat tipləri ilə işləyə bilən, lakin tip təhlükəsizliyini itirmədən təkrar istifadə oluna bilən komponentlər yaratmaq üçün vasitədir. Onlar siniflər, interfeyslər və metodlar yaza bilər ki, bunlar da tip parametrləri ilə işləyir.
Əsas üstünlüklər:
- Kompilyasiya mərhələsində tip təhlükəsizliyi: Tip uyğunluğu ilə bağlı səhvlər proqram icrasından əvvəl aşkarlanır.
- Kod təkrarlamasını azaldır: Fərqli tiplərlə işləyən ümumi algoritm və ya məlumat strukturu yaza bilərsiniz.
- Performans:
Objectkimi ümumi tiplərin istifadəsindən fərqli olaraq, tip çevirmə (cast) lazım deyil, bu da performansı yaxşılaşdıra bilər.
Java nümunəsi:
// Jeneriksiz List sinfi (köhnə yanaşma)
List list = new ArrayList();
list.add("salam");
list.add(123); // Hər hansı tiplər əlavə oluna bilər
String s = (String) list.get(0); // Əl ilə tip çevirmə tələb olunur
Integer i = (Integer) list.get(1); // Əl ilə tip çevirmə tələb olunur
// Jenerik List sinfi
List<String> stringList = new ArrayList<>();
stringList.add("dünya");
// stringList.add(123); // Kompilyasiya xətası! Yalnız sətirlər icazə verilir
String s2 = stringList.get(0); // Tip çevirməyə ehtiyac yoxdur
Jeneriklər kolleksiya və ya digər ümumi sinif/interfeys ilə işləyəcək məlumat tipini müəyyən etməyə imkan verir. Bu, tip təhlükəsizliyini təmin edir və icra zamanı yanlış məlumat tipləri ilə bağlı səhvlərin qarşısını alır.
C# nümunəsi:
// Jeneriklərlə sətir siyahısı
List<string> adlar = new List<string>();
adlar.Add("Alyus");
// adlar.Add(123); // Kompilyasiya xətası
string ilkAd = adlar[0]; // Tip çevirməyə ehtiyac yoxdur
Python-da, generik anlayışı, tip göstəriciləri (type hints) və typing modulu vasitəsilə həyata keçirilir:
from typing import List, Dict, Any
# Tip göstəricisi ilə sətir siyahısı
def sətirləriİşlə(datalar: List[str]):
for item in datalar:
print(item)
# Açarları sətir, dəyərləri isə hər hansı tip olan sözlük
def sözlükİşlə(datalar: Dict[str, Any]):
for açar, dəyər in datalar.items():
print(f"{açar}: {dəyər}")
Python-da tip göstəriciləri icra zamanı təhlükəsizlik təmin etmir (bu, statik analizatorlar, məsələn, MyPy tərəfindən həyata keçirilir), lakin kodun oxunaqlığını artırır və səhvlərin tapılmasını asanlaşdırır.
Ümumiyyətlə, generiklər, müxtəlif proqramlaşdırma dillərində elastik, təkrar istifadə oluna bilən və tip təhlükəsiz kod yaratmaq üçün güclü vasitədir.