Middle
რა არის გენერიკები (Generics)?
sobes.tech AI
პასუხი AI-სგან
ජෙනෙරිකස් (Generics) පන්තියන්, අතුරුමුහුණත් සහ ක්රමයන් පරාමිතීන් වර්ග භාවිතා කරමින් නිර්වචනය කිරීමට ඉඩ සලසයි. මෙය කේතයේ ලිවීමේ හැකියාව, නැවත භාවිතය සහ වර්ග ආරක්ෂාව වැඩි කරයි, විවිධ දත්ත වර්ග සමඟ වැඩ කිරීමට ඉඩ සලසයි, වර්ග පරීක්ෂණ ස්ථිරවම සිදු කරමින්.
ප්රධාන වාසි:
- වර්ග ආරක්ෂාව: සංයෝජකයා වර්ග පරීක්ෂා කරයි, ක්රියාත්මක කිරීමේ දෝෂ වලින් ආරක්ෂා කරයි.
- නැවත භාවිතය: එකම කේතය විවිධ දත්ත වර්ග සමඟ භාවිතා කළ හැකිය, කේත ප්රතිචක්රණය අඩු කරයි.
- කාර්යක්ෂමතාව: කිසිඳු භාෂාවන් (උදාහරණයක් ලෙස C#) තුළ, ජනරීති වර්ග විශේෂිත වර්ගය සැලකිල්ලට ගනිමින් ක්රියාත්මක වේ, එමඟින්
Objectභාවිතයට වඩා කාර්යක්ෂමතාව වැඩි විය හැක.
භාවිත උදාහරණ:
- සංග්රහ: ලයිස්තු, ශබ්දකෝෂ, කට්ටල, අංගවල පරාමිතිය සමඟ.
- ක්රම: ඕනෑම වර්ගයක දත්ත සමඟ වැඩ කරන ක්රම, නියමිත අතුරුමුහුණත් ක්රියාත්මක කරයි.
- පන්තියන්: ආවරණ පන්තියන්, කර්මාන්තශාලා, පරාමිතීන් සමඟ වැඩ කරනවන්.
C# උදාහරණ:
// ජනරීති ලයිස්තුව
List<string> නාමයන් = new List<string>();
නාමයන්.Add("Alice");
නාමයන්.Add("Bob");
// ජනරීති ක්රමය
public T පළමුඅංගයලබාගන්න<T>(List<T> ලයිස්තුව)
{
if (ලයිස්තුව != null && ලයිස්තුව.Count > 0)
{
return ලයිස්තුව[0];
}
return default(T); // T සඳහා පෙරනිමි අගය ආපසු දෙයි
}
Java උදාහරණ:
// ජනරීති ලයිස්තුව
List<String> නාමයන් = new ArrayList<>();
නාමයන්.add("Alice");
නාමයන්.add("Bob");
// ජනරීති ක්රමය
public <T> T පළමුඅංගයලබාගන්න(List<T> ලයිස්තුව) {
if (ලයිස්තුව != null && !ලයිස්තුව.isEmpty()) {
return ලයිස්තුව.get(0);
}
return null; // සබැඳි වර්ග සඳහා null ආපසු දෙයි
}
Python උදාහරණ (වර්ග-ඉඟි):
from typing import List, TypeVar
T = TypeVar('T')
def පළමුඅංගයලබාගන්න(දත්ත: List[T]) -> T | None:
# ක්රමය ඕනෑම ලයිස්තුවක් සමඟ වැඩ කරයි, එහි පළමු අංගය ආපසු දෙයි
if දත්ත:
return දත්ත[0]
return None
නාමයන්: List[str] = ["Alice", "Bob"]
පළමු_නම = පළමුඅංගයලබාගන්න(නාමයන්) # IDE තේරුම් ගනී, එය str
ඒ අනුව, කිසිඳු භාෂාවක (Java) ජනරීති වර්ග "වර්ගය මකා දැමීම" (type erasure) භාවිතා කරයි, එහි පරාමිතිය වර්ගය පිළිබඳ තොරතුරු සංයෝජනයේදී මකා දමයි. මෙය සීමා කිහිපයක් ඇති කරයි. වෙනත් භාෂාවන් (C#, Go) වර්ග තොරතුරු ක්රියාත්මක වේලාවේ තබා ගනී.
ජනරීති වර්ග යනු පිරිසිදු, ආරක්ෂිත, නැවත භාවිතා කළ හැකි කේත ලිවීමේ මූලික මෙවලම වේ.