Generic Data Structures
type लौटाने वाले function का pattern।
Generic Data Structures, CoddyKit पर Zig Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Zig Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Zig Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Zig में जेनेरिक कंटेनर
किसी डेटा संरचना को किसी भी तत्व प्रकार के लिए काम कराने हेतु, आप ऐसा फ़ंक्शन लिखते हैं जो एक प्रकार लेता है और एक बिल्कुल नई संरचना का प्रकार लौटाता है। 📦
एक ऐसा फ़ंक्शन जो प्रकार लौटाता है
युक्ति यह है कि किसी फ़ंक्शन का वापसी प्रकार type हो सकता है। यह संकलन-समय पर एक नया प्रकार बनाकर लौटाता है।
fn List(comptime T: type) type {
return struct {};
}अंदर संरचना बनाएँ
फ़ंक्शन के अंदर ऐसी संरचना परिभाषित करें जिसके fields प्रकार पैरामीटर T का उपयोग करते हों। प्रत्येक कॉल उस तत्व प्रकार के अनुरूप बनाई गई संरचना तैयार करती है।
fn Box(comptime T: type) type {
return struct { value: T };
}बनाए गए प्रकार को नाम दें
प्रकार लौटाने वाले फ़ंक्शन को कॉल करें और परिणाम को किसी const में रखें। अब आपके पास उपयोग के लिए एक ठोस प्रकार है।
const IntBox = Box(i32);एक इंस्टेंस बनाएँ
उस नामित प्रकार का उपयोग किसी भी संरचना की तरह करें। यहाँ हम एक Box बनाते हैं जिसमें पूर्णांक बयालीस रखा है।
const b = IntBox{ .value = 42 };आंतरिक संरचना में विधियाँ जोड़ें
लौटाई गई संरचना में विधियाँ भी हो सकती हैं। वे प्रकार पैरामीटर को देखती हैं, इसलिए पूरी तरह जेनेरिक बनी रहती हैं।
fn Box(comptime T: type) type {
return struct {
value: T,
fn get(self: @This()) T {
return self.value;
}
};
}@This से प्रकार तक पहुँचें
अनाम लौटाई गई संरचना के अंदर आप उसका नाम सीधे नहीं दे सकते, इसलिए विधियाँ आसपास की संरचना के प्रकार का संदर्भ देने के लिए @This() का उपयोग करती हैं।
self: @This()एक परिभाषा से अनेक प्रकार
फ़ंक्शन को अलग-अलग प्रकारों के साथ कॉल करने पर आपको अलग-अलग संरचनाएँ मिलती हैं। Box(i32) और Box(f64) अलग तथा पूरी तरह जाँचे गए प्रकार हैं।
const FloatBox = Box(f64);यही मानक लाइब्रेरी को सक्षम बनाता है
Zig की अपनी ArrayList और HashMap भी ठीक इसी तरीके से बनाई गई हैं: ऐसे फ़ंक्शन जो एक प्रकार लेते हैं और एक कॉन्फ़िगर किया हुआ कंटेनर प्रकार लौटाते हैं।
const Ints = std.ArrayList(i32);पूरी तरह संकलन-समय पर निर्धारित
यह पूरा प्रकार-निर्माण बिल्ड के दौरान होता है, इसलिए जेनेरिक कंटेनर की लागत हाथ से लिखे गए कंटेनर जितनी ही होती है।
बढ़ते समय आवंटक साथ रखें
जो कंटेनर बढ़ते हैं उनमें आवंटक field रखा जाता है, जिसे init के समय पास किया जाता है। इससे जेनेरिक प्रकार यह स्पष्ट रखता है कि उसकी मेमोरी कहाँ से आती है।
return struct {
items: []T,
alloc: std.mem.Allocator,
};त्वरित जाँच
आप Zig में ऐसा जेनेरिक stack चाहते हैं जो किसी भी तत्व प्रकार के लिए काम करे। आप कौन-सा पैटर्न उपयोग करेंगे?
पुनरावलोकन
ऐसा फ़ंक्शन लिखें जो एक type ले और संरचना का प्रकार लौटाए। प्रत्येक कॉल एक ठोस, विशिष्ट कंटेनर देती है। std अपने संग्रह इसी तरह बनाता है। 🎯
एआई शिक्षक के साथ Zig सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “Generic Data Structures” पाठ निःशुल्क है?
हाँ—“Generic Data Structures” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Zig Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Zig Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Generic Data Structures” में मैं क्या सीखूँगा?
type लौटाने वाले function का pattern। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Zig Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Zig Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Zig Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Generic Data Structures” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Zig Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Zig Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- ऐसे Functions जो Type लेते हैं
- Generic Data Structures
- @TypeOf और Type Reflection
- anytype Parameters