Gleam में टाइप एलियस का इस्तेमाल करके किसी मौजूदा टाइप को एक ऐसा सुविधाजनक नाम दिया जा सकता है, जिसे लिखना वरना मुश्किल होता।
pub type Headers =
List(#(String, String))
pub fn html_headers() -> Headers {
[
#("content-type", "text/html"),
#("x-frame-options", "DENY"),
]
}
जब इसे pub type के साथ लिखा जाता है, तो एलियस उस मॉड्यूल के बाहर भी इस्तेमाल किया जा सकता है जिसमें इसे परिभाषित किया गया है। अगर pub हटा दिया जाए, तो एलियस प्राइवेट हो जाता है और दूसरे मॉड्यूल में उसका इस्तेमाल नहीं किया जा सकता।
Gleam में डिक्शनरी एक डेटा स्ट्रक्चर है जो जानकारी को की-वैल्यू जोड़ों में संग्रहीत करता है। दूसरी भाषाओं में इन्हें असोसिएटिव ऐरे, हैश या डिक्शनरी भी कहा जाता है।
डिक्शनरी में की और वैल्यू के लिए कोई भी टाइप इस्तेमाल किया जा सकता है, और जब उन्हें एक्सेस किया जाता है या वे लौटाई जाती हैं, तो वे अपनी एंट्री का क्रम सुनिश्चित नहीं करतीं।
डिक्शनरी gleam/dict मॉड्यूल के फंक्शनों की मदद से बनाई जाती हैं और उन पर काम किया जाता है।
// Create an empty dict
let dict1 = dict.new()
// Create a dict with some values
let dict2 = dict.from_list([
#("name", "Gleam"),
#("colour", "Pink"),
])
// Add a value to a dict
let dict3 = dict.insert(dict2, "website", "https://gleam.run")
// Get a value from a dict
let name = dict.get(dict3, "name")
// -> Ok("Gleam")
इस अभ्यास में आप अपने स्थानीय आर्केड हॉल के सबसे लोकप्रिय खेल के हाई स्कोर का हिसाब रखने का तरीका बना रहे हैं।
आपको 5 फंक्शन बनाने हैं। ये ज़्यादातर एक ऐसे ऑब्जेक्ट को संभालने से जुड़े हैं जिसमें हाई स्कोर रखे जाते हैं।
एक फंक्शन create_score_board बनाइए जो एक डिक्शनरी लौटाता है, और वही डिक्शनरी हाई स्कोर बोर्ड का काम करती है।
इस ऑब्जेक्ट में कीज़ खिलाड़ियों के नाम होंगी और वैल्यूज़ उनके स्कोर होंगी।
टेस्ट के लिए आप चाहते हैं कि ऑब्जेक्ट में सीधे एक एंट्री पहले से शामिल हो।
इस शुरुआती एंट्री में खिलाड़ी का नाम "The Best Ever" और स्कोर 1_000_000 होना चाहिए।
create_score_board()
// returns an object with one initial entry
हाई स्कोर बोर्ड में कोई खिलाड़ी जोड़ने के लिए add_player फंक्शन बनाइए।
यह 3 पैरामीटर लेता है:
यह फंक्शन एक डिक्शनरी लौटाता है जिसमें नया खिलाड़ी और उसका स्कोर जोड़ दिया गया होता है।
अगर कोई खिलाड़ी आर्केड हॉल के नियम तोड़ता है, तो उसे हाई स्कोर बोर्ड से हाथ से हटा दिया जाता है।
remove_player बनाइए, जो 2 पैरामीटर लेता है:
यह फंक्शन वह डिक्शनरी लौटाना चाहिए जिसमें से हटाया गया खिलाड़ी न हो।
अगर खिलाड़ी शुरू से ही बोर्ड पर नहीं था, तो बोर्ड में कोई बदलाव नहीं होना चाहिए, उसे जैसा है वैसा ही लौटा देना चाहिए।
अगर कोई खिलाड़ी आर्केड हॉल में एक और खेल पूरा करता है, तो बोर्ड पर लिखे उसके पिछले स्कोर में कुछ अंक जोड़ दिए जाते हैं।
update_score बनाइए, जो 3 पैरामीटर लेता है:
फंक्शन को वह डिक्शनरी लौटानी चाहिए जिसमें स्कोर अपडेट हो चुका हो।
अगर खिलाड़ी शुरू से ही बोर्ड पर नहीं था, तो बोर्ड में कोई बदलाव नहीं होना चाहिए, उसे जैसा है वैसा ही लौटा देना चाहिए।
आर्केड हॉल सोमवार को एक अलग स्कोर बोर्ड रखता है। दिन के अंत में उस बोर्ड पर मौजूद हर खिलाड़ी को 100 अतिरिक्त अंक मिलते हैं।
apply_monday_bonus फंक्शन बनाइए, जो एक स्कोर बोर्ड लेता है।
यह फंक्शन एक डिक्शनरी लौटाता है जिसमें उस बोर्ड पर दर्ज हर खिलाड़ी के लिए बोनस अंक जोड़ दिए गए होते हैं।
Exercism पर साइन अप कीजिए और Gleam को 33 कॉन्सेप्ट122 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।