ट्रैक
/
Gleam
Gleam
/
अभ्यास
/
सुरक्षित खज़ाने का संदूक
सुरक्षित खज़ाने का संदूक

सुरक्षित खज़ाने का संदूक

सीखने का अभ्यास

परिचय

ओपेक टाइप

Gleam में ओपेक टाइप एक तरह के कस्टम टाइप होते हैं। इन टाइप की वैल्यू सिर्फ वही मॉड्यूल बना सकता है या उनसे पैटर्न मैच कर सकता है, जो उस टाइप को परिभाषित करता है। यह उन टाइप को बनाने में काम आता है जिनका इस्तेमाल सिर्फ एक खास तरीके से होना चाहिए।

ओपेक टाइप opaque कीवर्ड से परिभाषित किए जाते हैं।

pub opaque type PositiveInt {
  PositiveInt(inner: Int)
}

PositiveInt टाइप ऐसी जगहों पर इस्तेमाल किया जाता है जहाँ एक पूर्णांक चाहिए, लेकिन उसका शून्य या उससे बड़ा होना ज़रूरी है। Gleam का साधारण Int यहाँ काम नहीं आ सकता, क्योंकि वह ऋणात्मक भी हो सकता है।

जो मॉड्यूल इस टाइप को परिभाषित करता है, वह अंदर रखी पूर्णांक वैल्यू निकालने के लिए एक फंक्शन बना सकता है, और PositiveInt टाइप बनाने के लिए भी एक फंक्शन, जो वैल्यू धनात्मक न होने पर एरर लौटाता है।

pub fn from_int(i: Int) -> Result(PositiveInt, String) {
  case i {
    _ if i < 0 -> Error("Value must be positive")
    _ -> Ok(PositiveInt(i))
  }
}

pub fn to_int(i: PositiveInt) -> Int {
  i.inner
}

इस API की मदद से दूसरे मॉड्यूल ऋणात्मक वैल्यू वाला PositiveInt नहीं बना सकते। इसलिए जो भी फंक्शन PositiveInt लेता है, वह निश्चित रह सकता है कि वैल्यू धनात्मक है।

निर्देश

जिन छात्रों की नज़र तेज़ है, उन्होंने ध्यान दिया होगा कि पिछले अभ्यास में TreasureChest टाइप उतना सुरक्षित नहीं था!

get_treasure फंक्शन इस्तेमाल करते समय आपको पासवर्ड देना पड़ता था, लेकिन फिर भी आप TreasureChest टाइप को डीस्ट्रक्चर करके, पासवर्ड जाने बिना खज़ाना निकाल सकते थे।

चलिए, ओपेक टाइप की मदद से इसे ठीक करते हैं।

1. TreasureChest ओपेक टाइप बनाइए।

TreasureChest में दो फील्ड होते हैं:

  • एक पासवर्ड, जो एक String है।
  • एक खज़ाना, जो एक जेनेरिक टाइप है।

TreasureChest टाइप ओपेक होना चाहिए।

2. create फंक्शन बनाइए।

यह फंक्शन दो आर्गुमेंट लेता है:

  • एक पासवर्ड String।
  • किसी भी टाइप की एक खज़ाना वैल्यू।

यह फंक्शन एक TreasureChest लौटाता है, जिसमें वह पासवर्ड और वैल्यू होते हैं।

अगर पासवर्ड 8 अक्षरों से छोटा है, तो फंक्शन को एक एरर लौटानी चाहिए, जिसका संदेश यह हो: Password must be at least 8 characters long.

3. open फंक्शन बनाइए।

यह फंक्शन दो आर्गुमेंट लेता है:

  • एक TreasureChest।
  • एक पासवर्ड String।

अगर पासवर्ड TreasureChest में मौजूद पासवर्ड से मेल खाता है, तो फंक्शन को खज़ाना लौटाना चाहिए। वरना उसे एक एरर लौटानी चाहिए, जिसका संदेश यह हो: Incorrect password.

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Gleam Exercism

सुरक्षित खज़ाने का संदूक शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Gleam को 33 कॉन्सेप्ट122 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।