ऐरे एक आम डेटा स्ट्रक्चर है, जिसके साथ काम करना पड़ता है। इनके साथ काम करने के लिए मेथड का एक पूरा समूह मौजूद है। इसमें सॉर्ट करना, उलटना, बीच में जोड़ना और ऐसे ही कई और काम शामिल हैं।
इनमें से कुछ मेथड डेस्ट्रक्टिव होते हैं, यानी वे मूल ऐरे को ही बदल देते हैं। बाकी नॉन-डेस्ट्रक्टिव होते हैं, यानी वे एक नया ऐरे लौटाते हैं और मूल ऐरे को नहीं बदलते।
ऐरे के साथ काम करते समय सबसे ज़्यादा इस्तेमाल होने वाले कुछ मेथड ये हैं:
ऐरे में कोई एलिमेंट जोड़ते समय आप insert मेथड इस्तेमाल कर सकते हैं, जो आर्गुमेंट के रूप में एक इंडेक्स और एक एलिमेंट लेता है।
एलिमेंट बताए गए इंडेक्स पर जोड़ दिया जाता है, और ऐरे के बाकी एलिमेंट एक जगह दाईं ओर खिसक जाते हैं।
अगर इंडेक्स ऐरे की सीमा से बाहर हो, तो कोड IndexError उठाता है।
numbers = [1, 2, 3]
numbers.insert(1, 4)
numbers # => [1, 4, 2, 3]
numbers.insert(5, 5) # => Error: Index out of bounds (IndexError)
जब आप ऐरे से कोई खास एलिमेंट हटाना चाहते हैं, तो delete मेथड इस्तेमाल कर सकते हैं, जो आर्गुमेंट के रूप में एक एलिमेंट लेता है।
यह मेथड हटाया गया एलिमेंट लौटाता है।
अगर वह एलिमेंट ऐरे में मौजूद न हो, तो nil लौटता है।
numbers = [1, 2, 3]
numbers.delete(2) # => 2
numbers # => [1, 3]
ऐरे का पहला या अंतिम एलिमेंट पाने के लिए आप first और last मेथड इस्तेमाल कर सकते हैं।
ये मेथड एक वैकल्पिक आर्गुमेंट लेते हैं, जो बताता है कि कितने एलिमेंट लौटाने हैं।
इंडेक्स 0 या -1 इस्तेमाल करने या किसी रेंज का सहारा लेने के मुकाबले ये कोड को पढ़ने में ज़्यादा आसान बनाते हैं।
अगर ऐरे खाली हो, तो कोड Enumerable::EmptyError उठाता है।
numbers = [1, 2, 3]
numbers.first # => 1
numbers.last # => 3
numbers.first(2) # => [1, 2]
numbers.last(2) # => [2, 3]
empty_array = [] of Int32
empty_array.last # => Error: Empty enumerable (Enumerable::EmptyError)
ऐरे को उलटने के लिए आप reverse मेथड इस्तेमाल कर सकते हैं, जो एलिमेंट को उल्टे क्रम में रखकर एक नया ऐरे लौटाता है।
ध्यान दीजिए कि reverse एक नया ऐरे लौटाता है और मूल ऐरे को नहीं बदलता।
अगर आप मूल ऐरे को बदलना चाहते हैं, तो मेथड के नाम के अंत में ! लगाइए।
numbers = [1, 2, 3]
numbers.reverse # => [3, 2, 1]
numbers # => [1, 2, 3]
numbers.reverse! # => [3, 2, 1]
numbers # => [3, 2, 1]
+)ऐरे में ऑब्जेक्ट जोड़ने के लिए append मेथड (<<) काम आता है।
लेकिन जब दो ऐरे जोड़ने हों, तो आप + ऑपरेटर इस्तेमाल कर सकते हैं, जो दोनों ऐरे के एलिमेंट लेकर एक नया ऐरे लौटाता है।
[1, 2] + [3, 4] # => [1, 2, 3, 4]
अगर आप एक ऐरे को दूसरे ऐरे में जोड़ते हैं, तो वह पूरा ऐरे एक ही एलिमेंट के रूप में जुड़ता है।
[1, 2] << [3, 4] # => [1, 2, [3, 4]]
ऐरे खाली है या नहीं, यह जाँचने के लिए आप empty? मेथड इस्तेमाल कर सकते हैं, जो ऐरे खाली होने पर true और वरना false लौटाता है।
ऐरे की लंबाई की 0 से तुलना करने के मुकाबले यह कोड को पढ़ने में ज़्यादा आसान बनाता है।
[].empty? # => true
[1, 2, 3].empty? # => false
जब आप ऐरे में किसी एलिमेंट का इंडेक्स जानना चाहते हैं, तो index मेथड इस्तेमाल कर सकते हैं, जो आर्गुमेंट के रूप में एक एलिमेंट लेता है।
अगर वह एलिमेंट ऐरे में मौजूद न हो, तो nil लौटता है।
numbers = [1, 2, 3]
numbers.index(2) # => 1
जब आप जानना चाहते हैं कि ऐरे में कितने एलिमेंट हैं, तो size मेथड इस्तेमाल कर सकते हैं।
numbers = [1, 2, 3]
numbers.size # => 3
जब आप गिनना चाहते हैं कि कोई एलिमेंट ऐरे में कितनी बार मौजूद है, तो count मेथड इस्तेमाल कर सकते हैं।
fruits = ["apple", "banana", "apple"]
fruits.count("apple") # => 2
fruits.count("banana") # => 1
fruits.count("watermelon") # => 0
जब आप ऐरे को क्रम में लगाना चाहते हैं, तो sort मेथड इस्तेमाल कर सकते हैं, जो एलिमेंट को क्रम में लगाकर एक नया ऐरे लौटाता है।
reverse की तरह यह मेथड भी एक नया ऐरे लौटाता है और मूल ऐरे को नहीं बदलता।
numbers = [3, 2, 1]
numbers.sort # => [1, 2, 3]
numbers # => [3, 2, 1]
numbers.sort! # => [1, 2, 3]
numbers # => [1, 2, 3]
Chaitana एक बहुत लोकप्रिय थीम पार्क की मालकिन हैं। सुंदर ढंग से सजे परिसर के ठीक बीच में उनकी सिर्फ एक ही राइड है: दुनिया का सबसे बड़ा रोलर कोस्टर (TM)। हालाँकि यहाँ सिर्फ यही एक आकर्षण है, फिर भी दुनिया भर से लोग आते हैं और Chaitana के हाइपरकोस्टर पर सवार होने का मौका पाने के लिए घंटों कतार में लगे रहते हैं।
इस राइड के लिए दो कतारें हैं, जिनमें से हर एक को एक array से दर्शाया गया है:
आपसे कहा गया है कि पार्क के मेहमानों को बेहतर ढंग से संभालने के लिए कुछ कोड लिखिए। आपको नीचे दिए गए फंक्शन जल्द से जल्द बनाने हैं, इससे पहले कि मेहमान (और आपकी बॉस, Chaitana!) चिड़चिड़े हो जाएँ।
ColossalCoaster.add_to_queue मेथड बनाइए, जो 4 आर्गुमेंट <express_queue>, <normal_queue>, <ticket_type>, <person_name> लेता है और व्यक्ति का नाम जोड़कर अपडेट की गई उचित कतार लौटाता है।
<ticket_type> एक Int32 है, जिसमें 1 == express_queue और 0 == normal_queue.<person_name> उस व्यक्ति का नाम (एक String के रूप में) है जिसे संबंधित कतार में जोड़ना है।express_queue = ["Tony", "Bruce"]
normal_queue = ["RobotGuy", "WW"]
ColossalCoaster.add_to_queue(express_queue, normal_queue, 1, "RichieRich")
# => ["Tony", "Bruce", "RichieRich"]
एक व्यक्ति पार्क देर से पहुँचा, लेकिन वह उस कतार में लगना चाहता है जहाँ उसके दोस्त इंतज़ार कर रहे हैं। लेकिन उसे पता ही नहीं कि उसके दोस्त कहाँ खड़े हैं, और उन्हें कॉल करने के लिए फोन का सिग्नल भी नहीं है।
ColossalCoaster.find_my_friend मेथड बनाइए, जो 2 आर्गुमेंट queue और friend_name लेता है और कतार में उस व्यक्ति के नाम की जगह लौटाता है।
<queue> कतार में खड़े लोगों का एक array है।<friend_name> उस दोस्त का नाम है जिसका इंडेक्स (कतार में जगह) आपको ढूँढना है।ColossalCoaster.find_my_friend(["Natasha", "Steve", "T'challa", "Wanda", "Rocket"], "Steve")
# => 1
अब जब उनके दोस्त मिल गए हैं (ऊपर कार्य 2 में), तो देर से आया व्यक्ति कतार में उनकी जगह पर उनके साथ लगना चाहता है।
ColossalCoaster.add_with_friends मेथड बनाइए, जो 3 आर्गुमेंट queue, friend_name और person_name लेता है।
<queue> कतार में खड़े लोगों का एक array है।<friend_name> उस दोस्त का नाम है जिसकी जगह पर व्यक्ति को जोड़ना है।<person_name> उस व्यक्ति का नाम है जिसे उस इंडेक्स की जगह पर जोड़ना है।देर से आए व्यक्ति का नाम जोड़कर अपडेट की गई कतार लौटाइए।
ColossalCoaster.add_with_friends(["Natasha", "Steve", "T'challa", "Wanda", "Rocket"], "Steve", "Bucky")
# => ["Natasha", "Bucky", "Steve", "T'challa", "Wanda", "Rocket"]
आपने अभी-अभी कतार से सुना कि वहाँ एक बहुत बदतमीज़ व्यक्ति धक्का दे रहा है, चिल्ला रहा है और झगड़ा कर रहा है। बदसलूकी की वजह से उस बदमाश को बाहर निकाल देना है!
ColossalCoaster.remove_from_queue मेथड बनाइए, जो 2 आर्गुमेंट queue और person_name लेता है।
<queue> कतार में खड़े लोगों का एक array है।<person_name> उस व्यक्ति का नाम है जिसे बाहर निकालना है।उस बदतमीज़ व्यक्ति का नाम हटाकर अपडेट की गई कतार लौटाइए।
ColossalCoaster.remove_from_queue(["Natasha", "Steve", "Eltran", "Wanda", "Rocket"], "Eltran")
# => ["Natasha", "Steve", "Wanda", "Rocket"]
प्रशासनिक कामों के लिए, आपको किसी दी गई कतार के सारे नाम वर्णमाला के क्रम में लगाने हैं।
ColossalCoaster.sorted_queue मेथड बनाइए, जो 1 आर्गुमेंट queue (कतार में खड़े लोगों का array) लेता है।
मेथड को array की क्रम में लगाई गई एक प्रति लौटानी चाहिए।
ColossalCoaster.sorted_queue(["Natasha", "Steve", "Eltran", "Natasha", "Rocket"])
# => ['Eltran', 'Natasha', 'Natasha', 'Rocket', 'Steve']
Exercism पर साइन अप कीजिए और Crystal को 26 कॉन्सेप्ट142 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।