ट्रैक
/
Gleam
Gleam
/
अभ्यास
/
वैलेंटाइन दिवस
वैलेंटाइन दिवस

वैलेंटाइन दिवस

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

परिचय

कस्टम टाइप

Gleam में नए डेटा टाइप बनाने का तरीका कस्टम टाइप है। इनके कई वेरिएंट हो सकते हैं, और हर वेरिएंट का अपना नाम होता है।

pub type Season {
  Spring
  Summer
  Autumn
  Winter
}

कस्टम टाइप का हर केस चाहें तो कुछ डेटा भी रख सकता है, और अलग-अलग केस अलग-अलग तरह का डेटा रख सकते हैं। जब किसी वेरिएंट में डेटा होता है, तो उसे रिकॉर्ड कहते हैं।

pub type Number {
  SomeInt(Int)
  SomeFloat(Float)
  Invalid
}

किसी खास केस के लिए वैल्यू बनाने के लिए, अगर उसमें कोई अतिरिक्त डेटा नहीं है तो सिर्फ उसका नाम लिखिए (Spring), और अगर डेटा है तो उसे फंक्शन की तरह कॉल कीजिए (SomeInt(2))।

let spring = Spring
let integerTwo = SomeInt(2)

Gleam में हर चीज़ की तरह कस्टम टाइप में भी स्ट्रक्चरल इक्वलिटी होती है, यानी एक ही वेरिएंट की और एक ही डेटा वाली दो वैल्यू बराबर होती हैं।

Spring == Spring // -> True
Spring == Autumn // -> False
SomeInt(2) == SomeInt(2) // -> True
SomeInt(2) == SomeFloat(2.0) // -> False

कस्टम टाइप के वेरिएंट पर case एक्सप्रेशन की मदद से पैटर्न मैचिंग की जा सकती है।

import gleam/int
import gleam/float

pub fn describe(flexible_number: Number) -> String {
  case flexible_number {
    SomeFloat(f) -> "Float: " <> float.to_string(f)
    SomeInt(i) -> "Int: " <> int.to_string(i)
    Invalid -> "Neither a float nor an int"
  }
}

निर्देश

इस अभ्यास में वैलेंटाइन डे है। आप और आपका साथी मिलकर कुछ अच्छा करने की योजना बना रहे हैं। आपके साथी के पास बहुत सारे आइडिया हैं। अब वह आपसे इन आइडिया को रेट करने के लिए कह रहा है, ताकि तय हो सके कि कौन-सी गतिविधि की जाए।

आपके साथी ने ये आइडिया सुझाए हैं:

  • बोर्ड गेम खेलना
  • आराम करना
  • फिल्म देखना
  • रेस्टोरेंट जाना
  • टहलने जाना

अपने वैलेंटाइन डे की गतिविधि चुनने में मदद के लिए आपके पास छह टास्क हैं।

1. स्वीकृति को परिभाषित कीजिए

आपके साथी जो भी आइडिया सुझाता है, उस पर आप तीन में से एक जवाब देते हैं: हाँ, नहीं या शायद।

इन विकल्पों को दर्शाने के लिए Approval कस्टम टाइप को इन तीन केस के रूप में परिभाषित कीजिए: Yes, No और Maybe.

2. क्यूज़ीन को परिभाषित कीजिए

आपके साथी ने दो रेस्टोरेंट चुने हैं: एक कोरियन क्यूज़ीन पर आधारित और दूसरा तुर्की क्यूज़ीन पर।

इन क्यूज़ीन को दर्शाने के लिए Cuisine कस्टम टाइप को इन दो केस के रूप में परिभाषित कीजिए: Korean और Turkish.

3. फिल्म की शैलियाँ परिभाषित कीजिए

चुनने के लिए बहुत सारी फिल्में हैं, इसलिए विकल्प कम करने के लिए आपका साथी हर फिल्म की शैली भी बताता है।

इन शैलियों को केस के रूप में दर्शाने के लिए Genre कस्टम टाइप को परिभाषित कीजिए: Crime, Horror, Romance और Thriller.

4. गतिविधि को परिभाषित कीजिए

जैसा कहा गया, आपके साथी ने पाँच अलग-अलग गतिविधियाँ सुझाई हैं: बोर्ड गेम खेलना, आराम करना, फिल्म देखना, रेस्टोरेंट जाना और टहलने जाना।

इन गतिविधि प्रकारों को दर्शाने के लिए Activity कस्टम टाइप को परिभाषित कीजिए:

  • BoardGame: कोई जुड़ा हुआ डेटा नहीं।
  • Chill: कोई जुड़ा हुआ डेटा नहीं।
  • Movie: इसका Genre जुड़े हुए डेटा के रूप में होता है।
  • Restaurant: इसका Cuisine जुड़े हुए डेटा के रूप में होता है।
  • Walk: इसमें चलने की दूरी को किलोमीटर में दर्शाने वाला एक Int जुड़े हुए डेटा के रूप में होता है।

5. गतिविधि को रेट कीजिए

अब आप अपने साथी के आइडिया को रेट करने के लिए तैयार हैं। आपके साथी के हर आइडिया पर आपकी राय यह है:

  • बोर्ड गेम खेलना: नहीं।
  • आराम करना: नहीं।
  • फिल्म देखना: अगर रोमांटिक फिल्म हो तो हाँ, वरना नहीं।
  • रेस्टोरेंट जाना: क्यूज़ीन कोरियन हो तो हाँ, तुर्की हो तो शायद।
  • टहलने जाना: अगर टहलने की दूरी ग्यारह किलोमीटर से ज़्यादा हो तो हाँ; छह किलोमीटर से ज़्यादा हो तो शायद; वरना नहीं।

ऊपर बताई गई राय के आधार पर एक Activity वैल्यू लेकर Approval लौटाने वाला rate_activity नाम का फंक्शन बनाइए:

rate_activity(Restaurant(Turkish))
// -> Maybe
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Gleam Exercism

वैलेंटाइन दिवस शुरू करने के लिए तैयार हैं?

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