जब हम Gleam में किसी वैल्यू पर पैटर्न मैचिंग करते हैं, तो हमें यह सुनिश्चित करना होता है कि पैटर्न उस टाइप की हर संभावित वैल्यू से मेल खाता है, वरना कोड कंपाइल नहीं होगा।
यह फंक्शन अस्वीकार कर दिया जाएगा क्योंकि इसने ऐसी स्थिति को नहीं संभाला है जहाँ ऐरे खाली है:
pub fn get_first_element_or_crash(items: List(e)) -> e {
case items {
[item, ..] -> item
}
}
Gleam प्रोग्राम में ज़्यादातर हम हर संभावित स्थिति को संभालना चाहते हैं। लेकिन कुछ प्रोग्राम, जैसे प्रोटोटाइप और जल्दी लिखी जाने वाली स्क्रिप्ट, में हम सिर्फ ऐसे रास्ते पर ध्यान देना चाहते हैं जहाँ सब कुछ ठीक चलता है और बाकी स्थितियों के लिए कोड नहीं लिखना चाहते। यहीं पर Gleam का let assert काम आता है।
let assert की मदद से कोई पैटर्न किसी टाइप की सिर्फ कुछ संभावित वैल्यू से मेल खा सकता है, और अगर पैटर्न किसी वैल्यू से मेल नहीं खाता, तो प्रोग्राम क्रैश हो जाएगा। let assert का उपयोग करके हम ऊपर दिया गया फंक्शन ऐसे लिख सकते हैं:
pub fn get_first_element_or_crash(items: List(e)) -> e {
let assert [item, ..] = items
item
}
Gleam की लाइब्रेरी में कभी भी let assert का उपयोग नहीं करना चाहिए, क्योंकि इससे प्रोग्राम क्रैश हो सकता है। इसके बजाय उन्हें Result टाइप का उपयोग करना चाहिए और एप्लिकेशन डेवलपर को यह तय करने देना चाहिए कि एरर को कैसे संभालना है।
इवेंट्स की आयोजक मीका को काम पर प्रमोशन मिल गया है, और अपनी नई ज़िम्मेदारियों के तहत अब वह इवेंट्स डेटाबेस की देखभाल करती है। उसने जल्दी ही देखा कि बहुत सारा डेटा ऐसे तरीकों से रखा गया है जिनके साथ काम करना मुश्किल है, इसलिए आप दोनों ने मिलकर एक बार चलने वाली स्क्रिप्ट से उसे साफ करने का फैसला किया है।
यह स्क्रिप्ट सिर्फ एक ही बार चलनी है, और आपको डेटा की संरचना पर पूरा भरोसा है। ऐसे में आपको लगता है कि यहाँ Gleam के let असर्शन इस्तेमाल करना अच्छा विकल्प है।
हर पिछले इवेंट में उन समस्याओं की एक सूची होती है जो उस इवेंट के दौरान आई थीं। इन्हें रिज़ल्ट के रूप में संग्रहीत किया गया है, लेकिन ये हमेशा Error वेरिएंट ही होते हैं।
extract_error फंक्शन बनाइए, जो एक रिज़ल्ट लेता है जिसके हमेशा Error होने की उम्मीद है, और उसमें मौजूद एरर वैल्यू लौटाता है।
extract_error(Error("Not enough coffee"))
// -> "Not enough coffee"
टीम के नामों के आगे "Team " शब्द लगा दिया गया है, लेकिन इसकी ज़रूरत नहीं है। टीम के नाम से यह प्रीफिक्स हटाने के लिए remove_team_prefix फंक्शन बनाइए।
remove_team_prefix("Team Turtle")
// -> "Turtle"
हर इवेंट एक टीम चलाती है, और हर टीम किसी एक क्षेत्र से जुड़ी होती है। डेटाबेस में ये एक ही स्ट्रिंग में रखे जाते हैं और कॉमा से अलग किए जाते हैं।
split_region_and_team फंक्शन बनाइए, जो इस स्ट्रिंग को बाँटकर दो स्ट्रिंग का टपल बनाता है: एक क्षेत्र के लिए और एक टीम के लिए। टीम के नाम से "Team " प्रीफिक्स हटा देना चाहिए।
split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
Exercism पर साइन अप कीजिए और Gleam को 33 कॉन्सेप्ट122 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।