2011-06-24 29 views
13

मैं यह पता लगाने की कोशिश कर रहा हूं कि रूबी में insert फ़ंक्शन क्या करता है।कैसे काम करता है?

मैंने Google और ruby-doc.com से परामर्श लिया है लेकिन स्पष्टीकरण इस (प्रतीत होता है) रहस्यमय कार्य का वर्णन करने के लिए पर्याप्त नहीं है।

यहाँ क्या मुझे भ्रमित है:

a = %w{a b c d} 
puts a.insert(4, 5) output = a,b,c,d,5 

पहला सवाल उठाया जाता है, यही कारण है कि 4 सम्मिलित नहीं किया?

puts a.insert(2,2,6) 

उत्पादन होता है:

a 
b 
2 
6 
c 
d 

दो सवाल यह द्वारा उठाए गए

  1. क्यों 2 दो बार डाला जाता है कर रहे हैं?
  2. बी और सी के बीच मनमाने ढंग से 2 और छह (प्रतीत होता है) क्यों रखा जाता है?

उत्तर

36

मुझे यकीन नहीं है कि भ्रम क्या है। रूबी डॉक्स से:

ary.insert(index, obj...) -> ary 

आवेषण दिए गए मान दिए गए इंडेक्स (जो नकारात्मक हो सकता है) के साथ तत्व से पहले।

a = %w{ a b c d } 
a.insert(2, 99)   #=> ["a", "b", 99, "c", "d"] 
a.insert(-2, 1, 2, 3) #=> ["a", "b", 99, "c", 1, 2, 3, "d"] 

तो, a.insert(2, 99) सरणी बस से पहले सरणी ऑफसेट 2. याद रखें कि एक सरणी के सूचकांक 0 पर शुरू होता है तो यह है कि सरणी में तीसरे स्लॉट है में 99 डालने कर रहा है।

दूसरा उदाहरण सरणी [1,2,3] को दूसरे-से-द-एंडर सरणी स्लॉट में डालने वाला है, क्योंकि नकारात्मक ऑफ़सेट सरणी के अंत से गिनती है। -1 अंतिम सूचकांक है, -2 अंतिम है।

सरणी डॉक्स यह अच्छी तरह से कहते हैं:

सरणी अनुक्रमण सी या जावा में के रूप में 0 पर शुरू होता है,। एक नकारात्मक सूचकांक को से संबंधित सरणी के अंत के सापेक्ष माना जाता है --- अर्थात, -1 का सूचकांक सरणी के अंतिम तत्व को इंगित करता है, -2 सरणी में अंतिम तत्व के बगल में है, और इसी तरह ।

यह रूबी में न केवल सामान्य रूप से प्रोग्रामिंग में सीखने के लिए बहुत महत्वपूर्ण अवधारणाएं हैं।

5

ऐसा लगता है कि पहला पैरामीटर डालने वाला सूचकांक है, और शेष आइटम डालने के लिए हैं।

docs रूप ary.insert(index, obj...) → ary

समारोह लिस्टिंग, इस बात की पुष्टि करने के लिए प्रकट होता है तो आप बस सरणी के अंत तक कुछ मान जोड़ना चाहते हैं (मैं रूबी वाक्य रचना पता नहीं है, लेकिन यह सही होना चाहिए) मैं लगता है कि उदाहरण के लिए आप a.insert(a.length, 4, 5) या a.insert(a.length, 2, 2, 6) पर कॉल करना चाहेंगे।

+0

धन्यवाद। करूँगा। – Bodhidarma

+3

यदि आप सरणी के अंत में कुछ मान जोड़ना चाहते हैं, तो ['Array # push'] (http://www.ruby-doc.org/core/classes/Array.html#M000226) विधि का उपयोग करें। –

संबंधित मुद्दे