रूबी - ऐरे
रूबी सरणियों का आदेश दिया जाता है, किसी भी वस्तु के पूर्णांक-अनुक्रमित संग्रह। एक सरणी में प्रत्येक तत्व एक सूचकांक से जुड़ा हुआ है और संदर्भित है।
सरणी अनुक्रमण 0 से शुरू होता है, जैसे C या Java में। एक नकारात्मक सूचकांक को सरणी के अंत के सापेक्ष माना जाता है --- अर्थात -1 का सूचकांक सरणी के अंतिम तत्व को इंगित करता है, -2 सरणी में अंतिम तत्व के बगल में है, और इसी तरह।
रूबी सरणियां स्ट्रिंग, इंटेगर, फिक्सनम, हैश, सिंबल, यहां तक कि अन्य ऐरे ऑब्जेक्ट्स जैसी वस्तुओं को पकड़ सकती हैं। रूबी सरणियों अन्य भाषाओं में सरणियों के रूप में कठोर नहीं हैं। तत्वों को जोड़ने के दौरान रूबी सरणियाँ अपने आप बढ़ जाती हैं।
ऐरे बनाना
किसी सरणी को बनाने या आरंभ करने के कई तरीके हैं। एक तरीका नए वर्ग विधि के साथ है -
names = Array.new
आप सरणी बनाने के समय एक सरणी का आकार निर्धारित कर सकते हैं -
names = Array.new(20)
सरणी नामों में अब 20 तत्वों का आकार या लंबाई है। आप किसी सरणी के आकार को आकार या लंबाई विधियों के साथ वापस कर सकते हैं -
#!/usr/bin/ruby
names = Array.new(20)
puts names.size # This returns 20
puts names.length # This also returns 20
यह निम्नलिखित परिणाम का उत्पादन करेगा -
20
20
आप सरणी में प्रत्येक तत्व के लिए एक मूल्य प्रदान कर सकते हैं -
#!/usr/bin/ruby
names = Array.new(4, "mac")
puts "#{names}"
यह निम्नलिखित परिणाम का उत्पादन करेगा -
["mac", "mac", "mac", "mac"]
आप नए तत्व के साथ एक ब्लॉक का उपयोग भी कर सकते हैं, प्रत्येक तत्व को ब्लॉक करने के लिए उसका मूल्यांकन करता है -
#!/usr/bin/ruby
nums = Array.new(10) { |e| e = e * 2 }
puts "#{nums}"
यह निम्नलिखित परिणाम का उत्पादन करेगा -
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
ऐरे की एक और विधि है, []। यह इस तरह काम करता है -
nums = Array.[](1, 2, 3, 4,5)
सरणी निर्माण का एक और रूप इस प्रकार है -
nums = Array[1, 2, 3, 4,5]
कर्नेल मॉड्यूल कोर रूबी में उपलब्ध किसी सरणी विधि है, जो केवल एक ही तर्क को स्वीकार करता है। यहाँ, विधि एक सारणी बनाती है एक तर्क के रूप में एक अंक बनाने के लिए -
#!/usr/bin/ruby
digits = Array(0..9)
puts "#{digits}"
यह निम्नलिखित परिणाम का उत्पादन करेगा -
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
एरे बिल्ट-इन मेथड्स
हमें ऐरे विधि को कॉल करने के लिए ऐरे ऑब्जेक्ट का एक उदाहरण होना चाहिए। जैसा कि हमने देखा है, एरे ऑब्जेक्ट का एक उदाहरण बनाने का तरीका निम्नलिखित है -
Array.[](...) [or] Array[...] [or] [...]
यह दी गई वस्तुओं के साथ आबाद एक नया सरणी लौटाएगा। अब, बनाई गई वस्तु का उपयोग करके, हम किसी भी उपलब्ध उदाहरण के तरीकों को कॉल कर सकते हैं। उदाहरण के लिए -
#!/usr/bin/ruby
digits = Array(0..9)
num = digits.at(6)
puts "#{num}"
यह निम्नलिखित परिणाम का उत्पादन करेगा -
6
अनु क्रमांक। | तरीके और विवरण |
---|---|
1 | array & other_array कोई भी डुप्लिकेट के साथ दो सरणियों के लिए आम तत्वों युक्त एक नया सरणी देता है। |
2 | array * int [or] array * str स्व की अंतर प्रतियों को समेट कर बनाया गया एक नया सरणी लौटाता है। एक स्ट्रिंग तर्क के साथ, स्व.जॉइन (str) के बराबर। |
3 | array + other_array तीसरा सरणी उत्पन्न करने के लिए एक साथ दो सरणियों को समेटकर बनाया गया एक नया सरणी देता है। |
4 | array - other_array एक नई सरणी देता है जो मूल सरणी की एक प्रति है, जो किसी भी आइटम को हटाती है जो अन्य_अरे में भी दिखाई देती है। |
5 | array <=> other_array अन्य_स्ट्र के साथ तुलना करता है, -1 (से कम), 0 (बराबर), या 1 (अधिक से अधिक) लौटाता है। तुलनात्मक है। |
6 | array | other_array डुप्लिकेट को हटाकर, दूसरे_अरे के साथ एरे से जुड़कर एक नया एरे लौटाता है। |
7 | array << obj सरणी के अंत में दी गई वस्तु को दबाता है। यह अभिव्यक्ति स्वयं ही सरणी लौटाती है, इसलिए कई एप्स एक साथ जंजीर हो सकते हैं। |
8 | array <=> other_array पूर्णांक देता है (-1, 0, या +1) यदि यह सरणी अन्य के मुकाबले कम, बराबर या उससे अधिक है। |
9 | array == other_array दो सरणियाँ समान होती हैं यदि उनमें समान तत्वों की संख्या होती है और यदि प्रत्येक तत्व अन्य सरणी में संबंधित तत्व (ऑब्जेक्ट। ==) के बराबर होता है। |
10 | array[index] [or] array[start, length] [or] array[range] [or] array.slice(index) [or] array.slice(start, length) [or] array.slice(range) तत्व को इंडेक्स पर लौटाता है, या लंबाई तत्वों के लिए शुरू और जारी रखने के लिए एक सबर्रे लौटाता है, या रेंज द्वारा निर्दिष्ट सबर्रे देता है । ऋणात्मक सूचकांक सरणी के अंत से पीछे की ओर गिनती करते हैं (-1 अंतिम तत्व है)। यदि इंडेक्स (या स्टार्टिंग इंडेक्स) सीमा से बाहर है, तो शून्य लौटाता है । |
1 1 | array[index] = obj [or] array[start, length] = obj or an_array or nil [or] array[range] = obj or an_array or nil तत्व को इंडेक्स पर सेट करता है , या लंबाई तत्वों के लिए शुरू और जारी रखने के लिए एक सबर्रे को बदलता है, या रेंज द्वारा निर्दिष्ट एक सबर्रे को बदलता है । यदि सूचक सरणी की वर्तमान क्षमता से अधिक हैं, तो सरणी स्वचालित रूप से बढ़ती है। ऋणात्मक सूचकांक सरणी के अंत से पिछड़े की गणना करेंगे। लंबाई शून्य होने पर तत्वों को सम्मिलित करता है। यदि शून्य का उपयोग दूसरे और तीसरे रूप में किया जाता है, तो स्वयं से तत्वों को हटा देता है । |
12 | array.abbrev(pattern = nil) स्वयं में तार के लिए स्पष्ट दृष्टिकोण के सेट की गणना करता है । यदि एक पैटर्न या एक स्ट्रिंग पास की जाती है, तो केवल पैटर्न से मेल खाते या स्ट्रिंग से शुरू होने वाले तार को माना जाता है। |
13 | array.assoc(obj) एक ऐसे सरणी के माध्यम से खोज करता है, जिसके तत्व भी obj का उपयोग करते हुए प्रत्येक समाहित सरणी के पहले तत्व के साथ obj की तुलना करते हैं। == यदि कोई मैच नहीं मिला है तो पहला निहित सरणी देता है जो मेल खाता है या शून्य करता है। |
14 | array.at(index) इंडेक्स पर तत्व देता है। एक नकारात्मक सूचकांक स्वयं के अंत से मायने रखता है। यदि सूचकांक सीमा से बाहर है, तो शून्य लौटाता है। |
15 | array.clear सरणी से सभी तत्वों को निकालता है। |
16 | array.collect { |item| block } [or] array.map { |item| block } स्वयं के प्रत्येक तत्व के लिए एक बार ब्लॉक को आमंत्रित करता है । ब्लॉक द्वारा लौटाए गए मानों से युक्त एक नई सरणी बनाता है। |
17 | array.collect! { |item| block } [or] array.map! { |item| block } Invokes ब्लॉक के प्रत्येक तत्व के लिए एक बार आत्म , द्वारा दिए गए मान के साथ तत्व की जगह ब्लॉक । |
18 | array.compact हटाए गए सभी शून्य तत्वों के साथ स्वयं की एक प्रति लौटाता है। |
19 | array.compact! सरणी से शून्य तत्व निकालता है । रिटर्न शून्य अगर कोई बदलाव नहीं किए गए थे। |
20 | array.concat(other_array) अन्य तत्वों को स्वयं में लागू करता है । |
21 | array.delete(obj) [or] array.delete(obj) { block } स्वयं से आइटम हटाता है जो obj के बराबर हैं । यदि आइटम नहीं मिला है, तो शून्य लौटाता है । यदि वैकल्पिक कोड ब्लॉक दिया गया है, तो आइटम नहीं मिलने पर ब्लॉक का परिणाम लौटाता है। |
22 | array.delete_at(index) निर्दिष्ट पर तत्व को हटा देता सूचकांक , उस तत्व लौटने, या नहीं के बराबर है, तो अनुक्रमणिका सीमा से बाहर है। |
23 | array.delete_if { |item| block } स्वयं के प्रत्येक तत्व को हटाता है जिसके लिए ब्लॉक सच का मूल्यांकन करता है। |
24 | array.each { |item| block } कॉल स्वयं में प्रत्येक तत्व के लिए एक बार ब्लॉक करता है , उस तत्व को एक पैरामीटर के रूप में पारित करता है। |
25 | array.each_index { |index| block } समान # के रूप में समान है, लेकिन तत्व के बजाय तत्व के सूचकांक को पास करता है। |
26 | array.empty? यदि स्व सरणी में कोई तत्व नहीं है, तो यह सही है। |
27 | array.eql?(other) यदि सरणी और अन्य समान ऑब्जेक्ट हैं, या दोनों एक ही सामग्री के साथ सरणियाँ हैं, तो सही है। |
28 | array.fetch(index) [or] array.fetch(index, default) [or] array.fetch(index) { |index| block } स्थिति सूचकांक में तत्व को वापस करने की कोशिश करता है । यदि इंडेक्स सरणी के बाहर स्थित है, तो पहला फॉर्म इंडेक्सइयर अपवाद को छोड़ता है, दूसरा फॉर्म डिफ़ॉल्ट रूप से वापस आता है , और तीसरा फॉर्म इंडेक्स में पास होने वाले ब्लॉक को लागू करने का मान देता है । सरणी के अंत से सूचकांक गणना के नकारात्मक मूल्य । |
29 | array.fill(obj) [or] array.fill(obj, start [, length]) [or] array.fill(obj, range) [or] array.fill { |index| block } [or] array.fill(start [, length] ) { |index| block } [or] array.fill(range) { |index| block } पहले तीन रूपों ने स्वयं के चयनित तत्वों को ओबज के लिए निर्धारित किया । शून्य की एक शुरुआत शून्य के बराबर है। शून्य की एक लंबाई स्वयं के बराबर है । अंतिम तीन रूप ब्लॉक के मान के साथ सरणी को भरते हैं । ब्लॉक के साथ प्रत्येक तत्व का पूर्ण सूचकांक भरे जाने के लिए पारित कर दिया है। |
30 | array.first [or] array.first(n) सरणी का पहला तत्व, या पहला n तत्व देता है। यदि सरणी खाली है, तो पहला फ़ॉर्म शून्य पर लौटता है , और दूसरा फ़ॉर्म खाली सरणी देता है। |
31 | array.flatten एक नया सरणी लौटाता है जो इस सरणी (पुनरावर्ती) का एक आयामी आयाम है। |
32 | array.flatten! जगह में चपटा सरणी । रिटर्न शून्य यदि कोई संशोधन किए गए थे। (सरणी में कोई सबरेज़ नहीं है।) |
33 | array.frozen? सही है अगर सरणी जमी है (या अस्थायी रूप से सॉर्ट किए जाने के दौरान जमे हुए)। |
34 | array.hash सरणी के लिए हैश-कोड की गणना करता है। समान सामग्री वाले दो सरणियों का समान हैश कोड होगा। |
35 | array.include?(obj) सही है अगर obj स्वयं में मौजूद है , तो झूठे अन्यथा। |
36 | array.index(obj) स्व में पहली वस्तु का सूचकांक लौटाता है जो == से ओबज तक है। रिटर्न शून्य अगर कोई मुकाबला नहीं पाया जाता है। |
37 | array.indexes(i1, i2, ... iN) [or] array.indices(i1, i2, ... iN) इस तरीके को रूबी के नवीनतम संस्करण में चित्रित किया गया है, इसलिए कृपया Array # values_at का उपयोग करें। |
38 | array.indices(i1, i2, ... iN) [or] array.indexes(i1, i2, ... iN) इस तरीके को रूबी के नवीनतम संस्करण में चित्रित किया गया है, इसलिए कृपया Array # values_at का उपयोग करें। |
39 | array.insert(index, obj...) दिए गए सूचकांक के साथ तत्व से पहले दिए गए मूल्यों को सम्मिलित करता है (जो नकारात्मक हो सकता है)। |
40 | array.inspect सरणी का एक मुद्रण योग्य संस्करण बनाता है। |
41 | array.join(sep = $,) सरणी के प्रत्येक तत्व को एक स्ट्रिंग में परिवर्तित करके बनाई गई स्ट्रिंग लौटाता है, sep द्वारा अलग किया जाता है । |
42 | array.last [or] array.last(n) स्व के अंतिम तत्व को लौटाता है । यदि सरणी खाली है , तो पहला फ़ॉर्म शून्य हो जाता है । |
43 | array.length स्वयं में तत्वों की संख्या लौटाता है । शून्य हो सकता है। |
44 | array.map { |item| block } [or] array.collect { |item| block } स्वयं के प्रत्येक तत्व के लिए एक बार ब्लॉक को आमंत्रित करता है । ब्लॉक द्वारा लौटाए गए मानों से युक्त एक नई सरणी बनाता है । |
45 | array.map! { |item| block } [or] array.collect! { |item| block } Invokes ब्लॉक के प्रत्येक तत्व के लिए एक बार सरणी , ब्लॉक द्वारा दिए गए मान के साथ तत्व की जगह। |
46 | array.nitems स्वयं में गैर-शून्य तत्वों की संख्या लौटाता है । शून्य हो सकता है। |
47 | array.pack(aTemplateString) टेम्प्लेटस्ट्रिंग में निर्देशों के अनुसार सरणी की सामग्री को एक बाइनरी अनुक्रम में पैक करता है। निर्देश ए, ए, और जेड का एक गणना द्वारा पालन किया जा सकता है, जो परिणामी क्षेत्र की चौड़ाई देता है। शेष निर्देशों में एक गिनती भी हो सकती है, जो परिवर्तित करने के लिए सरणी तत्वों की संख्या को दर्शाती है। यदि गणना एक तारांकन चिह्न (*) है, तो सभी शेष सरणी तत्व परिवर्तित हो जाएंगे। निर्दिष्ट प्रकार के लिए अंतर्निहित प्लेटफ़ॉर्म के मूल आकार का उपयोग करने के लिए किसी भी निर्देश का अभी भी एक अंडरस्कोर (_) द्वारा अनुसरण किया जा सकता है; अन्यथा, वे एक प्लेटफ़ॉर्म स्वतंत्र आकार का उपयोग करते हैं। टेम्पलेट स्ट्रिंग में रिक्त स्थान की अनदेखी की जाती है। |
48 | array.pop से पिछले तत्व निकालता सरणी और यह रिटर्न, या नहीं के बराबर है, तो सरणी खाली है। |
49 | array.push(obj, ...) इस सरणी के अंत में दिए गए आब्जेक्शन को पुश करता है (जोड़ता है)। यह अभिव्यक्ति स्वयं ही सरणी लौटाती है, इसलिए कई एप्स एक साथ जंजीर हो सकते हैं। |
50 | array.rassoc(key) उस सरणी के माध्यम से खोज करता है जिसके तत्व भी सरणियाँ हैं। == का उपयोग कर प्रत्येक निहित सरणी के दूसरे तत्व के साथ कुंजी की तुलना करता है । पहले समाहित सरणी देता है जो मेल खाता है। |
51 | array.reject { |item| block } आइटम वाले एक नई सरणी रिटर्न सरणी है जिसके लिए ब्लॉक नहीं है सच । |
52 | array.reject! { |item| block } से हटाता तत्वों सरणी है जिसके लिए के लिए ब्लॉक मूल्यांकन करता है सच है, लेकिन रिटर्न शून्य अगर कोई बदलाव नहीं किए गए थे। Array # delete_if के बराबर। |
53 | array.replace(other_array) की सामग्री को बदल देता है की सामग्री के साथ other_array , छोटा या यदि आवश्यक हो तो विस्तार। |
54 | array.reverse एक नया सरणी देता है जिसमें सरणी के तत्व उल्टे क्रम में होते हैं। |
55 | array.reverse! जगह में उलट सरणी । |
56 | array.reverse_each {|item| block } Array # प्रत्येक के रूप में समान है, लेकिन पीछे क्रम में सरणी को पीछे छोड़ता है। |
57 | array.rindex(obj) सरणी में अंतिम वस्तु के सूचकांक == को obj पर लौटाता है। रिटर्न शून्य अगर कोई मुकाबला नहीं पाया जाता है। |
58 | array.select {|item| block } सरणी से क्रमिक तत्वों में गुजरने वाले ब्लॉक को आमंत्रित करता है, उन तत्वों से युक्त एक सरणी लौटाता है जिसके लिए ब्लॉक एक सही मूल्य देता है । |
59 | array.shift स्वयं का पहला तत्व लौटाता है और उसे हटा देता है (अन्य सभी तत्वों को एक-एक करके नीचे स्थानांतरित करता है)। यदि सरणी खाली है तो शून्य लौटाता है। |
60 | array.size सरणी की लंबाई (तत्वों की संख्या) लौटाता है । लंबाई के लिए उपनाम। |
61 | array.slice(index) [or] array.slice(start, length) [or] array.slice(range) [or] array[index] [or] array[start, length] [or] array[range] तत्व को इंडेक्स पर लौटाता है, या लंबाई तत्वों के लिए शुरू और जारी रखने के लिए एक सबर्रे लौटाता है, या रेंज द्वारा निर्दिष्ट सबर्रे देता है । ऋणात्मक सूचकांक सरणी के अंत से पीछे की ओर गिनती करते हैं (-1 अंतिम तत्व है)। यदि इंडेक्स (या स्टार्टिंग इंडेक्स) सीमा से बाहर है, तो एनआईएल लौटाता है । |
62 | array.slice!(index) [or] array.slice!(start, length) [or] array.slice!(range) एक सूचकांक (वैकल्पिक रूप से एक लंबाई के साथ) या एक श्रेणी द्वारा दिए गए तत्व को हटाता है । यदि अनुक्रमणिका सीमा से बाहर है , तो हटाए गए ऑब्जेक्ट, सबर्रे या नील को लौटाता है । |
63 | array.sort [or] array.sort { | a,b | block } स्व को छाँटकर बनाया गया नया सरणी देता है। |
64 | array.sort! [or] array.sort! { | a,b | block } आत्मदेव कहते हैं। |
65 | array.to_a स्व लौटाता है । अगर एरे के उपवर्ग पर कॉल किया जाता है , तो रिसीवर को एक ऐरे ऑब्जेक्ट में कनवर्ट करता है। |
66 | array.to_ary स्व लौटाता है। |
67 | array.to_s स्वंय लौट आता है। |
68 | array.transpose मान लेता है कि स्वयं सरणी का एक सरणी है और पंक्तियों और स्तंभों को स्थानांतरित करता है। |
69 | array.uniq में डुप्लिकेट मानों को निकाल कर एक नई सरणी रिटर्न सरणी । |
70 | array.uniq! स्वयं से डुप्लिकेट तत्वों को निकालता है । यदि कोई परिवर्तन नहीं किया जाता है तो रिटर्न शून्य हो जाता है (यानी कोई डुप्लिकेट नहीं मिलता है)। |
71 | array.unshift(obj, ...) सरणी के सामने की ओर वस्तुओं को प्रस्तुत करता है, अन्य तत्व एक ऊपर। |
72 | array.values_at(selector,...) दिए गए चयनकर्ता (एक या अधिक) के अनुरूप स्वयं में तत्वों से युक्त एक सरणी देता है । चयनकर्ता पूर्णांक सूचक या श्रेणी हो सकते हैं। |
73 | array.zip(arg, ...) [or] array.zip(arg, ...){ | arr | block } किसी भी तर्क को सरणियों में परिवर्तित करता है, फिर प्रत्येक तर्क से संबंधित तत्वों के साथ सरणी के तत्वों को मर्ज करता है। |
ऐरे पैक निर्देश
अनु क्रमांक। | निर्देश और विवरण |
---|---|
1 | @ निरपेक्ष स्थिति में ले जाता है। |
2 | A ASCII स्ट्रिंग (अंतरिक्ष गद्देदार, गिनती चौड़ाई है)। |
3 | a ASCII स्ट्रिंग (शून्य गद्देदार, गिनती चौड़ाई है)। |
4 | B स्ट्रिंग (अवरोही बिट क्रम)। |
5 | b बिट स्ट्रिंग (आरोही बिट ऑर्डर)। |
6 | C अचिन्हित वर्ण। |
7 | c चार। |
8 | D, d डबल-सटीक फ्लोट, देशी प्रारूप। |
9 | E डबल-सटीक फ्लोट, लिटिल-एंडियन बाइट ऑर्डर। |
10 | e एकल-सटीक फ्लोट, लिटिल-एंडियन बाइट ऑर्डर। |
1 1 | F, f एकल-सटीक फ्लोट, देशी प्रारूप। |
12 | G डबल-सटीक फ्लोट, नेटवर्क (बिग-एंडियन) बाइट ऑर्डर। |
13 | g एकल-सटीक फ्लोट, नेटवर्क (बिग-एंडियन) बाइट ऑर्डर। |
14 | H हेक्स स्ट्रिंग (पहले उच्च कुतरना)। |
15 | h हेक्स स्ट्रिंग (कम नीबेल पहले)। |
16 | I निरुपित पूर्णांक। |
17 | i पूर्णांक। |
18 | L लंबे समय के बाद। |
19 | l लंबा। |
20 | M मुद्रित करने योग्य, MIME एन्कोडिंग (RFC 2045 देखें)। |
21 | m Base64- एन्कोडेड स्ट्रिंग। |
22 | N लंबा, नेटवर्क (बड़ा-एंडियन) बाइट ऑर्डर। |
23 | n शॉर्ट, नेटवर्क (बिग-एंडियन) बाइट ऑर्डर। |
24 | P एक संरचना को इंगित करता है (निश्चित-लंबाई स्ट्रिंग)। |
25 | p एक शून्य-समाप्त स्ट्रिंग को इंगित करता है। |
26 | Q, q 64-बिट संख्या। |
27 | S अकारण छोटा। |
28 | s कम। |
29 | U UTF-8। |
30 | u UU- एन्कोडेड स्ट्रिंग। |
31 | V लंबे, छोटे-एंडियन बाइट ऑर्डर। |
32 | v लघु, छोटे-एंडियन बाइट क्रम। |
33 | w BER- संकुचित पूर्णांक \ fnm। |
34 | X एक बाइट का बैकअप लें। |
35 | x नल बाइट। |
36 | Z एक के रूप में ही, सिवाय इसके कि अशक्त * के साथ जोड़ा जाता है। |
उदाहरण
विभिन्न डेटा पैक करने के लिए निम्न उदाहरण का प्रयास करें।
a = [ "a", "b", "c" ]
n = [ 65, 66, 67 ]
puts a.pack("A3A3A3") #=> "a b c "
puts a.pack("a3a3a3") #=> "a\000\000b\000\000c\000\000"
puts n.pack("ccc") #=> "ABC"
यह निम्नलिखित परिणाम का उत्पादन करेगा -
a b c
abc
ABC