Ruby में ऐरे क्रम में रखे गए संग्रह होते हैं, जिनका इंडेक्स पूर्णांक होता है और जिनमें किसी भी तरह के ऑब्जेक्ट रखे जा सकते हैं।
ऐरे की इंडेक्सिंग 0 से शुरू होती है।
ऋणात्मक इंडेक्स को ऐरे के अंत के सापेक्ष माना जाता है। जैसे -1 इंडेक्स ऐरे के अंतिम एलिमेंट को दिखाता है, -2 अंत से ठीक पहले वाले एलिमेंट को, और इसी तरह आगे भी।
ऐरे आम तौर पर [] नोटेशन से बनाए जाते हैं।
इनमें किसी भी तरह के ऑब्जेक्ट रखे जा सकते हैं।
array = [1, "two", 3.0]
ऐरे के एलिमेंट उनके इंडेक्स की मदद से #[] मेथड से निकाले जा सकते हैं।
यह दिए गए इंडेक्स पर मौजूद एलिमेंट लौटाता है, या फिर शुरुआती इंडेक्स से शुरू होकर तय लंबाई तक चलने वाला सब-ऐरे लौटाता है।
ऋणात्मक इंडेक्स ऐरे के अंत से पीछे की ओर गिने जाते हैं।
a = [ "a", "b", "c", "d", "e" ]
a[2] #=> "c"
a[6] #=> nil
a[1, 3] #=> [ "b", "c", "d" ]
a[-1] #=> "e"
a[-2] #=> "d"
a[-3, 2] #=> ["c", "d"]
ऐरे पर बहुत से काम के सहायक मेथड होते हैं। यहाँ कुछ ज़्यादा आम मेथड दिए गए हैं:
fibonacci = [0, 1, 1, 2, 3, 5, 8, 13]
fibonacci.size #=> 8
fibonacci.sum #=> 33
fibonacci.reverse #=> [13, 8, 5, 3, 2, 1, 1, 0]
संग्रहों पर एक-एक करके चलने के लिए लूप इस्तेमाल करने के बजाय Ruby में हम एन्यूमरेशन का उपयोग करते हैं।
एन्यूमरेशन का मतलब है किसी संग्रह (यहाँ ऐरे) पर एक-एक करके आगे बढ़ना और हर ऑब्जेक्ट पर कोई काम करना। एन्यूमरेशन Ruby की एक महत्वपूर्ण अवधारणा है और इसका इस्तेमाल छाँटने, समूह बनाने, मैप करने, घटाने और बहुत कुछ करने में होता है।
ऐरे के हर शब्द को प्रिंट करने वाला एन्यूमरेशन कुछ ऐसा दिखेगा:
words = ["the", "cat", "sat"]
words.each do |word|
puts word
end
# Output:
# the
# cat
# sat
इस उदाहरण में हमने अपने ऐरे पर .each मेथड कॉल किया है और उसमें एक ब्लॉक पास किया है, जो एक पैरामीटर (word) लेता है और उसे प्रिंट कर देता है।
ब्लॉक को हम ट्रैक में आगे और विस्तार से देखेंगे, लेकिन फिलहाल इन्हें ऐसे फंक्शन मानिए जिनका कोई नाम नहीं होता और जो शून्य या ज़्यादा आर्गुमेंट ले सकते हैं।
इन्हें do...end सिंटैक्स (ऊपर) या {} सिंटैक्स (नीचे) से बनाया जा सकता है।
यहाँ ब्लॉक इस्तेमाल करने वाले कुछ और ऐरे मेथड के उदाहरण दिए गए हैं:
fibonacci = [0, 1, 1, 2, 3, 5, 8, 13]
fibonacci.count { |number| number == 1 } #=> 2
fibonacci.any? { |number| number == 6 } #=> false
fibonacci.select { |number| number.odd? } #=> [1, 1, 3, 5, 13]
fibonacci.all? { |number| number < 20 } #=> true
fibonacci.map { |number| number * 2 } #=> [0, 2, 2, 4, 6, 10, 16, 26]
आपको पक्षी देखने का बहुत शौक है और आप यह हिसाब रखते हैं कि पिछले सात दिनों में आपके बगीचे में कितने पक्षी आए।
आपके पाँच काम हैं, और वे सब आपके बगीचे में आए पक्षियों की संख्याओं से जुड़े हैं।
तुलना करने के लिए आप पिछले सप्ताह की गिनती की एक प्रति हमेशा पास रखते हैं, जो यह थी: 0, 2, 5, 3, 7, 8 और 4। BirdCount.last_week मेथड बनाइए। यह पिछले सप्ताह की गिनती लौटाता है:
BirdCount.last_week
# => [0, 2, 5, 3, 7, 8, 4]
BirdCount#yesterday मेथड बनाइए। यह कल आपके बगीचे में आए पक्षियों की संख्या लौटाता है। पक्षियों की गिनती दिन के क्रम में लगी है: पहला एलिमेंट सबसे पुराने दिन की गिनती है, और अंतिम एलिमेंट आज की गिनती।
birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.yesterday
# => 4
BirdCount#total मेथड बनाइए। यह आपके बगीचे में आए पक्षियों की कुल संख्या लौटाता है:
birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.total
# => 19
कुछ दिन दूसरों से ज़्यादा व्यस्त होते हैं। व्यस्त दिन वह होता है जब आपके बगीचे में पाँच या उससे अधिक पक्षी आए हों।
BirdCount#busy_days मेथड बनाइए। यह व्यस्त दिनों की संख्या लौटाता है:
birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.busy_days
# => 2
BirdCount#day_without_birds? मेथड बनाइए। अगर किसी दिन बगीचे में एक भी पक्षी नहीं आया था, तो यह true लौटाता है; वरना false लौटाता है:
birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.day_without_birds?
# => true
Exercism पर साइन अप कीजिए और Ruby को 21 कॉन्सेप्ट121 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।