Middle
Nədir ümumi (Generics)?
sobes.tech Süni İntellekt
AI-dan cavab
Genetiklər (Ümumi Tiplər) — müxtəlif tiplərdəki məlumatlarla işləyən sinflər, interfeyslər və metodlar yazmağa imkan verən mexanizmdir və bu, tiplərin təhlükəsizliyini tərtib zamanı təmin edir. Onlar təkrar istifadə oluna bilən komponentlər yaratmağa imkan verir və hər hansı məlumat tipində işləyə bilər, tiplə bağlı məlumatı itirmədən, bu da icra zamanı tiplərin çevrilməsi xətalarını minimuma endirir.
Əsas üstünlüklər:
- Tip təhlükəsizliyi: Kompilyator ümumi strukturlarda tiplərin düzgün istifadəsini yoxlayır.
- Kodun miqdarını azaltmaq: Bir ümumi sinif və ya metod çox sayda tiplə işləyə bilər.
- Kodun oxunaqlılığı: Komponentin hansı tiplərlə işlədiyi aydın görünür.
- Performansın artırılması (bəzən): İcra zamanı tiplərin çevrilməsinə ehtiyac olmaması performansı bir qədər yaxşılaşdıra bilər.
Nümunə (Java):
// Ümumi sinif nümunəsi
class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}
// Müxtəlif tiplərlə ümumi sinifdən istifadə
Box<Integer> integerBox = new Box<>();
integerBox.setContent(10);
int value = integerBox.getContent(); // Tip təhlükəsizliyi, çevirməyə ehtiyac yoxdur
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
String text = stringBox.getContent(); // Tip təhlükəsizliyi, çevirməyə ehtiyac yoxdur
Python (Type Hinting, Generics-ə yaxın nümunə):
from typing import TypeVar, Generic
T = TypeVar('T')
class Box(Generic[T]):
def __init__(self) -> None:
self._content: T | None = None
def set_content(self, content: T) -> None:
self._content = content
def get_content(self) -> T | None:
return self._content
# Type hinting ilə istifadə
integer_box: Box[int] = Box()
integer_box.set_content(10)
value: int | None = integer_box.get_content() # Statik analiz alətlərinə kömək edir
string_box: Box[str] = Box()
string_box.set_content("Hello")
text: str | None = string_box.get_content() # Statik analiz alətlərinə kömək edir