मैं सरणी की चार वस्तुओं को कैसे पुन: सक्रिय कर सकता हूं और सभी नहीं? निम्नलिखित कोड में, यह सभी वस्तुओं पर पुनरावृत्त करता है। मुझे केवल पहली चार वस्तुओं की आवश्यकता है।एक सरणी के पहले एन तत्वों पर Iterate
objects = Products.all();
arr=Array.new
objects.each do |obj|
arr << obj
end
p arr
यह objects=objects.slice(4)
की तरह किया जा सकता है, या एक ही रास्ता यात्रा है?
संपादित करें:
मैं भी मुद्रित करने के लिए कितनी बार यात्रा होता है की जरूरत है, लेकिन मेरे समाधान objects[0..3]
(उत्तर देने के लिए धन्यवाद यहाँ) लंबा है।
i=0;
arr=Array.new
objects[0..3].each do |obj|
arr << obj
p i;
i++;
end
तुम सिर्फ पहले चार वस्तुओं हड़पने के लिए कोशिश कर रहे हैं, या आप पहले चार वस्तुओं से अधिक पुनरावृति करने के लिए कोशिश कर रहे हैं का उपयोग करके पहले n तत्वों प्राप्त कर सकते हैं न ? आप पहली एन ऑब्जेक्ट्स को पकड़ने के लिए 'टेक' विधि का उपयोग कर सकते हैं यदि आप बस उन पर पुन: प्रयास करना चाहते हैं: 'objects.take (4)। प्रत्येक करें ...' –
क्यों नहीं 'arr = Products.limit (4)। to_a' (लेकिन आपको शायद 'to_a' की भी आवश्यकता नहीं है)? जब भी आप खुद को 'Model.all' कह रहे हैं तो आपको फिर से सोचना चाहिए (और फिर तीसरा समय)। –
@Yosef आप चाहते हैं [प्रत्येक_with_index] (http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_with_index) ... भी, '++' एक नहीं है रूबी ऑपरेटर – Kyle