ट्रैक
/
Gleam
Gleam
/
अभ्यास
/
बेट्टी की बाइक दुकान
बेट्टी की बाइक दुकान

बेट्टी की बाइक दुकान

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

परिचय

पूर्णांक

Gleam में संख्याएँ दो तरह की होती हैं: पूर्णांक और दशमलव संख्याएँ।

पूर्णांक ऐसी संख्याएँ होती हैं जिनमें दशमलव भाग नहीं होता।

let integer = 3
// -> 3

Gleam में कई ऑपरेटर हैं जो पूर्णांकों के साथ काम करते हैं।

1 + 1 // -> 2
5 - 1 // -> 4
5 / 2 // -> 2
3 * 3 // -> 9
5 % 2 // -> 1

2 > 1  // -> True
2 < 1  // -> False
2 >= 1 // -> True
2 <= 1 // -> False

दशमलव संख्याएँ

दशमलव संख्याओं में दशमलव चिह्न के बाद एक या अधिक अंक होते हैं।

let float = 3.45
// -> 3.45

दशमलव संख्याओं के लिए भी अपने अलग ऑपरेटर होते हैं।

1.0 +. 1.4 // -> 2.4
5.0 -. 1.5 // -> 3.5
5.0 /. 2.0 // -> 2.5
3.0 *. 3.1 // -> 9.3

2.0 >. 1.0  // -> True
2.0 <. 1.0  // -> False
2.0 >=. 1.0 // -> True
2.0 <=. 1.0 // -> False

मॉड्यूल

मॉड्यूल

Gleam का कोड मॉड्यूल में बाँटा जाता है, और हर फाइल एक Gleam मॉड्यूल होती है।

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

// This function is public
pub fn add(x, y) {
  x + y
}

// This function is private
fn subtract(x, y) {
  x - y
}

Gleam मॉड्यूल के अपने नाम होते हैं। यह नाम src या test डायरेक्टरी में मौजूद उस फाइल के पाथ से तय होता है।

जैसे, src\geometry\rectangle.gleam (Windows पर) या src/geometry/rectangle.gleam (UNIX जैसे ऑपरेटिंग सिस्टम पर) में बनाया गया मॉड्यूल geometry/rectangle कहलाएगा।

दूसरे मॉड्यूल से फंक्शन इम्पोर्ट करना

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

क्वालिफाइड इम्पोर्ट ही डिफ़ॉल्ट होते हैं। ऐसे मॉड्यूल के किसी फंक्शन को इस्तेमाल करने के लिए उसके नाम से पहले मॉड्यूल का नाम लगाना पड़ता है (जैसे gleam/list मॉड्यूल का map फंक्शन लिखने के लिए list.map लिखा जाता है)।

// Import the int module
import gleam/int

pub fn run(x: Int) -> String {
  // Use the to_string function from the int module
  int.to_string(x)
}

डिफ़ॉल्ट रूप से मॉड्यूल को जिस नाम से पुकारा जाता है, वह उसके नाम का अंतिम हिस्सा होता है, यहाँ int। लेकिन as कीवर्ड इस्तेमाल करके इसे बदला जा सकता है।

// Import the int module and refer to it as i
import gleam/int as i

pub fn run(x: Int) -> String {
  i.to_string(x)
}

अनक्वालिफाइड इम्पोर्ट से उस मॉड्यूल के खोले गए फंक्शन सीधे इस्तेमाल किए जा सकते हैं, उनके नाम से पहले मॉड्यूल का नाम लगाए बिना।

// Import the to_string function from the int module
import gleam/int.{to_string}

pub fn run(x: Int) -> String {
  to_string(x)
}

क्वालिफाइड इम्पोर्ट को प्राथमिकता दी जाती है, क्योंकि इससे पाठक को साफ़ पता चलता है कि फंक्शन कहाँ से आ रहा है और नाम टकराने की समस्या भी नहीं होती।

स्टैंडर्ड लाइब्रेरी

Gleam की स्टैंडर्ड लाइब्रेरी काफी समृद्ध है और उसका डॉक्युमेंटेशन भी बहुत अच्छा है। इसका डॉक्युमेंटेशन hexdocs.pm/gleam_stdlib पर ऑनलाइन उपलब्ध है। इस लिंक को कहीं सहेजकर रख लीजिए, इसकी आपको बहुत बार ज़रूरत पड़ेगी!

अधिकतर डेटा टाइप के लिए एक मॉड्यूल मौजूद है जिसमें उस डेटा टाइप पर काम करने वाले फंक्शन हैं। जैसे पूर्णांकों के लिए gleam/int मॉड्यूल है, स्ट्रिंग के लिए gleam/string, ऐरे के लिए gleam/list, और इसी तरह आगे भी।

निर्देश

इस अभ्यास में आप कुछ कोड लिखकर Betty's Bike Shop की मदद करेंगे, जो बाइक और उसके पुर्ज़ों की ऑनलाइन दुकान है। आपके सामने तीन काम हैं, जिनका उद्देश्य वेबसाइट पर बाइक और पुर्ज़ों के दाम सही तरीके से दिखाना है।

1. pence_to_pounds फंक्शन एक्सपोर्ट कीजिए

आपके सहकर्मी ने मॉड्यूल का ढाँचा पहले ही लिख दिया है, जिसमें pence_to_pounds और pounds_to_string नाम के अधूरे फंक्शन हैं। लेकिन वे pence_to_pounds फंक्शन एक्सपोर्ट करना भूल गए हैं, इसलिए यह अभी दूसरे मॉड्यूल या टेस्ट सूट को दिखाई नहीं देता।

pence_to_pounds फंक्शन एक्सपोर्ट कीजिए।

2. पेंस को पाउंड में बदलिए

अभी दाम पेंस की पूर्णांक संख्या के रूप में संग्रहीत किया जाता है (यह बाइक की दुकान ब्रिटेन में है)। वेबसाइट पर हम दाम पाउंड में दिखाना चाहते हैं, जहाँ 1.00 पाउंड बराबर 100 पेंस होते हैं। आपका पहला काम है pence_to_pounds फंक्शन बनाना, जो पेंस की Int संख्या लेता है और उसे उसके बराबर पाउंड में Float के रूप में बदल देता है। इस फंक्शन के लिए टाइप एनोटेशन भी जोड़िए।

pence_to_pounds(106)
// -> 1.06

3. वेबसाइट पर दिखाने के लिए दाम को फॉर्मैट कीजिए

चूँकि Betty's Bike Shop पाउंड में बाइक बेचती है, दाम "£" चिह्न के साथ दिखाए जाने चाहिए। इसलिए आपका दूसरा काम है pounds_to_string फंक्शन बनाना, जो पाउंड में दी गई राशि Float के रूप में लेता है और उसके आगे पाउंड का चिह्न लगाकर उस दाम को String के रूप में लौटाता है।

इनका उपयोग करने से पहले आपको gleam/float और gleam/string मॉड्यूल इम्पोर्ट कर लेने चाहिए।

pounds_to_string के लिए टाइप एनोटेशन भी लिखिए।

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

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

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