2009-07-19 8 views
5

की एक पंक्ति में एक चर को प्रारंभ करने और बढ़ाने के लिए क्या यह रूबी में ऐसा करने का सबसे आसान तरीका है?कोड

<% for item in @items %> 
    <%= n = n + 1 rescue n = 1 %> 
<% end %> 

जो '1 "के लिए" n "initializes और यह वृद्धि कर देता है के रूप में पाश की प्रगति (और इसे बाहर प्रिंट) के बाद से यह एक मेरे ऐप की विचारों में है

उत्तर

16

आप एक त्रिगुट ऑपरेटर का उपयोग कर सकते हैं:

<% for item in @items %> 
    <%= n = n ? n+1 : 1 %> 
<% end %> 

लेकिन, तुम क्या करने की कोशिश कर रहे बातों के आधार पर, मैं एक each_with_index अनुमान लगा रहा हूँ अधिक उचित होगा

<% @items.each_with_index do |item, n| %> 
    <%= n %> 
<% end %> 
+0

आह अच्छा, मुझे लगता है कि दूसरा विकल्प वह है जिसे मैं ढूंढ रहा था। – Zepplock

+0

"एन" के लिए प्रारंभिक मान असाइन करने का कोई तरीका भी है? – Zepplock

+2

प्रारंभिक मान असाइन करें और फिर प्रत्येक बार 1 से बढ़ोतरी करें? सूचकांक एक काउंटर नहीं है - यह एक सूचकांक है। यदि आप इसे एक निश्चित ऑफ़सेट से बढ़ाना चाहते हैं, तो बस प्रिंट करते समय इसे जोड़ें: <%= n + 5 %> – zaius

0

उम।

n = @items.size 
+0

नहीं, @ items.size एक स्थिर (लूप स्कोप के भीतर) – Zepplock

+0

आह है, मुझे लगता है कि आप का मतलब है कि आप कुछ कर रहे हैं [i ] else [/ i] लूप में इसके साथ, आपके उदाहरण में नहीं दिखाया गया है? –

5

आप रूबी के नील बल पर भी एक पूर्णांक पर भरोसा कर सकते हैं जिसके परिणामस्वरूप शून्य हो सकता है।

<% for item in @items %> 
    <%= n = n.to_i + 1 %> 
<% end %>