Gleam में ऐरे शून्य या अधिक वैल्यू का एक अपरिवर्तनीय संग्रह होता है। ऐरे की सभी वैल्यू का टाइप एक ही होना चाहिए। चूँकि ऐरे अपरिवर्तनीय होते हैं, इसलिए एक बार ऐरे बन जाने के बाद उस ऐरे की वैल्यू कभी नहीं बदल सकती। ऐसा दिखने वाला कोई भी फंक्शन या ऑपरेटर जो ऐरे को बदलता प्रतीत होता है (जैसे कोई एलिमेंट जोड़ना), वास्तव में एक नया ऐरे लौटाता है।
ऐरे इस तरह बनाए जा सकते हैं:
let empty = []
let singleValue = [5]
let threeValues = ["a", "b", "c"]
ऐरे में एलिमेंट जोड़ने का सबसे आम तरीका स्प्रेड सिंटैक्स है:
let two_to_four = [2, 3, 4]
let one_to_four = [1, ..two_to_four]
// -> [1, 2, 3, 4]
Gleam की स्टैंडर्ड लाइब्रेरी में gleam/list मॉड्यूल में ऐरे के साथ काम करने के लिए कई उपयोगी फंक्शन हैं। यह मॉड्यूल Gleam कोड में बहुत इस्तेमाल किया जाता है, इसलिए इससे परिचित होना अच्छा है।
case एक्सप्रेशन में ऐरे पैटर्न इस्तेमाल करके ऐरे से मैच किया जा सकता है और उसमें मौजूद वैल्यू को वेरिएबल में असाइन किया जा सकता है:
pub fn describe(list: List(String)) -> String {
case list {
[] -> "Empty list"
[x] -> "List with one item: " <> x
[x, y] -> "List with two items: " <> x <> " and " <> y
_ -> "List with three or more items"
}
}
ठीक-ठीक लंबाई वाले ऐरे से मैच करने के अलावा, स्प्रेड सिंटैक्स से कम-से-कम एक तय लंबाई वाले ऐरे से भी मैच किया जा सकता है:
pub fn describe(list: List(String)) -> String {
case list {
[_, _, ..] -> "List with at least two items"
[_] -> "List with one item"
[] -> "Empty list"
}
}
स्प्रेड सिंटैक्स का इस्तेमाल ऐरे के बाकी हिस्से को किसी वेरिएबल में असाइन करने के लिए भी किया जा सकता है:
pub fn remove_first_item(list: List(String)) -> List(String) {
case list {
// Return the list without the first item
[_, ..rest] -> rest
// There's no first item to remove, return an empty list
_ -> []
}
}
case एक्सप्रेशन में उस टाइप की हर संभव वैल्यू के लिए एक पैटर्न होना चाहिए जिससे मैच किया जा रहा है, इसलिए बची हुई वैल्यू को संभालने के लिए अक्सर अंत में एक डिस्कार्ड पैटर्न (_) लिखा जाता है।
इस अभ्यास में आप कोड लिखेंगे जो उन प्रोग्रामिंग भाषाओं के ऐरे पर नज़र रखेगा जिन्हें आप Exercism पर सीखना चाहते हैं।
आपको छह काम करने हैं, और इन सबमें ऐरे के साथ काम करना होगा।
जिन भाषाओं को आप सीखना चाहते हैं, उन पर नज़र रखने के लिए आपको एक नया ऐरे बनाना होगा। new_list फंक्शन बनाइए जो एक नया, खाली ऐरे लौटाता है।
new_list()
// -> []
फिलहाल आपके पास एक कागज़ है जिस पर आपकी सीखने वाली भाषाएँ लिखी हैं: Gleam, Go और TypeScript। existing_list फंक्शन बनाइए जो यही ऐरे लौटाता है।
existing_list()
// -> ["Gleam", "Go", "TypeScript"]
जैसे-जैसे आप Exercism पर घूमते हैं और नई दिलचस्प भाषाएँ ढूँढते हैं, आप उन्हें अपने ऐरे में जोड़ना चाहते हैं। add_language फंक्शन बनाइए जो आपके ऐरे की शुरुआत में एक नई भाषा जोड़ता है।
add_language(["OCaml", "Elixir"], "Scheme")
// -> ["Scheme", "OCaml", "Elixir"]
भाषाओं को एक-एक करके गिनना सुविधाजनक नहीं है। count_languages फंक्शन बनाइए जो आपके ऐरे में भाषाओं की संख्या गिनता है।
count_languages(["jq", "Elm", "Rust", "Kotlin"])
// -> 4
किसी समय आपको पता चलता है कि आपका ऐरे वास्तव में उल्टे क्रम में है! reverse_list फंक्शन बनाइए जो आपके ऐरे को उलट देता है।
reverse_list(["Python", "Julia", "Idris", "COBOL"])
// -> ["COBOL", "Idris", "Julia", "Python"]
आपको सभी भाषाएँ पसंद हैं, लेकिन Gleam का दिल में एक खास स्थान है। इसलिए भाषाओं के किसी ऐरे को लेकर आप सचमुच उत्साहित होते हैं, अगर:
exciting_list फंक्शन बनाइए जो जाँचता है कि भाषाओं का ऐरे रोमांचक है या नहीं:
exciting_list(["Lua", "Gleam"])
// -> True
Exercism पर साइन अप कीजिए और Gleam को 33 कॉन्सेप्ट122 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।