Middle
რა არის გენერიკები?
sobes.tech AI
პასუხი AI-სგან
ජෙනරිකස් (Generics) යනු, විවිධ වර්ගවල දත්ත සමඟ වැඩ කිරීමට හැකි පන්තියන්, අතුරුමුහුණත් සහ ක්රම ලිවිය හැකි මැෂින් එකක් වන අතර, ඒවා සමඟ කාලීනව වර්ග ආරක්ෂාව ලබා දේ. ඒවා නැවත භාවිතා කළ හැකි කොටස් නිර්මාණය කිරීමට ඉඩ සලසයි, ඒවා ඕනෑම වර්ගයක දත්ත සමඟ වැඩ කළ හැකි අතර, වර්ග තොරතුරු අහිමි නොවීම මඟින් ක්රියාත්මක කිරීමේදී වර්ග මාරු කිරීමේ දෝෂ අඩු කරයි.
ප්රධාන වාසි:
- වර්ග ආරක්ෂාව: සම්පූර්ණ වර්ග භාවිතය නිවැරදි බව පරික්ෂා කරයි.
- කේත සංඛ්යාව අඩු කිරීම: එකම ජනරූප පන්තියක් හෝ ක්රමයක් බොහෝ වර්ග සමඟ වැඩ කළ හැක.
- කේත කියවීම පහසුකම: කොටස කවර වර්ග සමඟ වැඩ කරන්නේද යන්න පැහැදිලි වේ.
- ඵලදායීතාව වැඩි කිරීම (සමහර අවස්ථා): ක්රියාත්මක කිරීමේදී වර්ග මාරු කිරීම අවශ්ය නොවීම නිසා කාර්යක්ෂමතාව ටිකක් වැඩි විය හැක.
උදාහරණයක් (Java):
// ජනරූප පන්තියක් උදාහරණය
class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}
// විවිධ වර්ග සමඟ භාවිතා කිරීම
Box<Integer> integerBox = new Box<>();
integerBox.setContent(10);
int value = integerBox.getContent(); // වර්ග ආරක්ෂාව, මාරු කිරීමට අවශ්ය නැත
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
String text = stringBox.getContent(); // වර්ග ආරක්ෂාව, මාරු කිරීමට අවශ්ය නැත
Python (Type Hinting සමඟ, Generics අසළ):
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 සමඟ භාවිතා
integer_box: Box[int] = Box()
integer_box.set_content(10)
value: int | None = integer_box.get_content() # ස්ථායි විශ්ලේෂණ මෙවලම් උදව් කරයි
string_box: Box[str] = Box()
string_box.set_content("Hello")
text: str | None = string_box.get_content() # ස්ථායි විශ්ලේෂණ මෙවලම් උදව් කරයි