जब कोई टाइप किसी टाइप पैरामीटर की मदद से किसी भी टाइप की वैल्यू रख सकता है, तो वह जेनेरिक टाइप कहलाता है।
उदाहरण के लिए, इस Box टाइप में a टाइप पैरामीटर है (जो छोटे अक्षरों में लिखा जाता है)।
pub type Box(a) {
Box(a)
}
a टाइप पैरामीटर किसी भी टाइप के लिए एक प्लेसहोल्डर है, इसलिए Box को स्ट्रिंग, पूर्णांक या किसी भी दूसरे टाइप के साथ इस्तेमाल किया जा सकता है।
Box("Hello, Joe!") // The type is Box(String)
Box(42) // The type is Box(Int)
किसी टाइप में एक से अधिक टाइप पैरामीटर भी हो सकते हैं, जिन्हें कॉमा से अलग किया जाता है।
pub type Pair(a, b) {
Pair(a, b)
}
टाइप पैरामीटर फंक्शन के आर्गुमेंट में भी इस्तेमाल किए जा सकते हैं।
यह फंक्शन a टाइप की एक वैल्यू लेता है और ऐसे फंक्शन को दो बार कॉल करता है जो एक a लेता है और एक b लौटाता है।
pub fn twice(value: a, f: fn(a) -> b) -> b {
f(value)
f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)
इस अभ्यास में आप एक जेनेरिक (और जादुई!) TreasureChest लिखेंगे, जिसमें थोड़ा खज़ाना रखा जा सके।
एक TreasureChest कस्टम टाइप बनाइए जिसमें सिर्फ एक वेरिएंट हो।
उस वेरिएंट के साथ एक String वैल्यू जुड़ी होनी चाहिए, जिसका उपयोग खज़ाने के संदूक का पासवर्ड रखने के लिए किया जाएगा।
उस वेरिएंट के साथ एक जेनेरिक वैल्यू भी जुड़ी होनी चाहिए, जिसका उपयोग खज़ाना रखने के लिए किया जाएगा। यह वैल्यू जेनेरिक है, इसलिए खज़ाना कुछ भी हो सकता है।
एक UnlockResult कस्टम टाइप बनाइए जिसमें दो वेरिएंट हों।
पहला वेरिएंट Unlocked होना चाहिए, और उसमें एक जेनेरिक वैल्यू होनी चाहिए, जिसका उपयोग खज़ाना रखने के लिए किया जाएगा।
दूसरा वेरिएंट WrongPassword होना चाहिए, जिसमें कोई वैल्यू नहीं होती।
इस फंक्शन को दो पैरामीटर लेने चाहिए
TreasureChest जेनेरिक कस्टम टाइपString (पासवर्ड आज़माने के लिए)इस फंक्शन को दिए गए पासवर्ड को TreasureChest में मौजूद String से मिलाकर जाँचना चाहिए।
इस फंक्शन को एक UnlockResult लौटाना चाहिए।
अगर दोनों पासवर्ड मेल खाते हैं तो TreasureChest से मिली जेनेरिक वैल्यू (यानी खज़ाना!) के साथ Unlocked लौटाइए।
अगर पासवर्ड मेल नहीं खाते तो WrongPassword लौटाइए।
Exercism पर साइन अप कीजिए और Gleam को 33 कॉन्सेप्ट122 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।