Middle
Generics nima?
sobes.tech AI
AIdan javob
Generiklar (Umumiy Turlar) — turli xil ma'lumotlar bilan ishlaydigan sinflar, interfeyslar va metodlarni yozishga imkon beradigan mexanizm bo'lib, ular kompilatsiya vaqtida tur xavfsizligini ta'minlaydi. Ular qayta ishlatiladigan komponentlarni yaratishga imkon beradi, ular har qanday ma'lumot turida ishlay oladi, tur haqida ma'lumotni yo'qotmasdan, bu esa bajarilish vaqtida tur o'tkazish xatolarini minimallashtiradi.
Asosiy afzalliklar:
- Tur xavfsizligi: Kompilyator umumiy tuzilmalar ichida turlarni to'g'ri ishlatilishini tekshiradi.
- Kod miqdorini kamaytirish: Birgina umumiy sinf yoki metod ko'plab turlar bilan ishlay oladi.
- Kod o'qilishi: Komponent qanday turlar bilan ishlayotganligi aniq ko'rinadi.
- Performansni oshirish (ba'zi hollarda): bajarilish vaqtida turlarni o'tkazish zarurati bo'lmasligi, biroz yaxshilanishi mumkin.
Misol (Java):
// Umumiy sinf misoli
class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}
// Turli turlar bilan umumiy sinfdan foydalanish
Box<Integer> integerBox = new Box<>();
integerBox.setContent(10);
int value = integerBox.getContent(); // Tur xavfsizligi, o'tkazishga hojat yo'q
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
String text = stringBox.getContent(); // Tur xavfsizligi, o'tkazishga hojat yo'q
Misol (Python - Type Hinting, Genericsga yaqin):
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 bilan foydalanish
integer_box: Box[int] = Box()
integer_box.set_content(10)
value: int | None = integer_box.get_content() # Statik tahlil vositalariga yordam beradi
string_box: Box[str] = Box()
string_box.set_content("Hello")
text: str | None = string_box.get_content() # Statik tahlil vositalariga yordam beradi