2010-02-24 13 views
5

मुझे लगता है कि मैंने अभी चीजों को कहने के लिए उपयोग किया है:क्या रूबी/रेल के बराबर ++ है?

x++ 

PHP और जावा भूमि में। लेकिन जब मैंने अपने रेल कोड में यह कोशिश की तो यह एक फिट था:

compile error 
/users/gshankar/projects/naplan/app/views/answers/new.html.haml:19: syntax error, unexpected ';' 
/users/gshankar/projects/naplan/app/views/answers/new.html.haml:23: syntax error, unexpected kENSURE, expecting kEND 
...}\n", 0, false);_erbout;ensure;@haml_buffer = @haml_buffer.u... 
          ^
/users/gshankar/projects/naplan/app/views/answers/new.html.haml:26: syntax error, unexpected $end, expecting kEND 

मैं रूबी/रेल ऑपरेटर के लिए ++ के संदर्भ के लिए थोड़ी देर के लिए googled लेकिन कुछ भी नहीं मिला। ऐसी भाषा के लिए जो कम लिखने पर केंद्रित है, मुझे थोड़ा अजीब लगता है कि ++ समकक्ष नहीं होगा। क्या मैं कुछ भूल रहा हूँ?

+2

x + = 1 # ................. –

उत्तर

10

इस प्रयास करें:

x += 1 
+0

x ++ (और ++ x) दोनों इनलाइन हैं, और इससे विभिन्न आदेशों में निष्पादित होते हैं। उदाहरण के तौर पर, x + = 1: 'row_top = row_height * row_index ++;' –

4

x+=1 सबसे अच्छा आप रूबी में कर सकते हैं।

एक विस्तृत विवरण के लिए, http://redmine.ruby-lang.org/issues/show/1432

+0

का उपयोग करते समय स्पष्टीकरण के लिए धन्यवाद, उदाहरण के तौर पर, इस पंक्ति को डुप्लिकेट करना (पढ़ना: इसे विभाजित किए बिना) संभव नहीं है। यह जानना अच्छा है कि मैं ऐसा क्यों नहीं कर सकता :) –

+0

एफवाईआई: लिंक मर गया :( –

3

वास्तव में आप अपने आप को पूछ किया जाना चाहिए क्यों तुम वेतन वृद्धि/कमी की जरूरत है देखते हैं। मैं अब दो साल से रूबी का उपयोग कर रहा हूं, और यह नहीं देखा था कि वृद्धि और कमी ऑपरेटर गायब थे। हो सकता है क्योंकि रुबी तरीका संचालन करने के लिए जहां वृद्धि और कमी ऑपरेटर आमतौर पर उपयोग किया जाता है, एक पुनरावर्तक के साथ होता है।

जैसे each_with_index जो सरणी में प्रत्येक तत्व/अनुक्रमणिका जोड़ी के लिए दिए गए ब्लॉक को निष्पादित करता है।

उदाहरण के लिए, यह कोड प्रत्येक तत्व और इसकी अनुक्रमणिका की समानता के लिए स्ट्रिंग प्रस्तुति को आउटपुट करने वाली सरणी के माध्यम से पुनरावृत्त करेगा।

array = ["first", "second", "third","fourth","last"] 
array.each_with_index do |object,index| 
    puts index % 2 ? "even" : "odd" 
    puts object.to_s 
end 

संपादित करें: हटाया गया फिक्सम एक्सटेंशन पोस्टफिक्स वृद्धि प्रदान करता है क्योंकि यह काम नहीं करता है। नज़दीकी निरीक्षण पर आपको इसे जोड़ने से रोक नहीं है, लेकिन इसमें सी में आपकी सुविधा लिखना शामिल होगा, और एक पुनर्मूल्यांकन होगा।

+0

लेकिन '++ x' के बारे में क्या? (ऐसा नहीं है कि इसे कभी भी * इस तरह इस्तेमाल किया जाना चाहिए। मुझे हर बार रोकना है I 'जबकि (- x)' जैसे कुछ देखें और वास्तव में क्या कर रहा है इसके बारे में सोचें (क्या x कभी भी शरीर में 0 होगा?)) – Ponkadoodle

+0

यह बिल्कुल काम नहीं करेगा। सबसे पहले, आप केवल मनमानी ऑपरेटरों को परिभाषित नहीं कर सकते हैं, और "++" रूबी में भी विश्लेषण नहीं करेगा - इसे 'x.send (' ++ ')' के रूप में जाना होगा। दूसरा, आप 'self =' कुछ भी नहीं लिख सकते हैं। याद रखें, 'x = कुछ 'सिर्फ' x' ​​नाम को एक नई वस्तु का संदर्भ देता है - यह उस ऑब्जेक्ट का मान नहीं बदलता जो पहले था। – Chuck

+0

धन्यवाद चक, जो मुझे परीक्षण किए बिना कोड पोस्ट करने के लिए सिखाएगा। मुझे यकीन है कि वहां है एक ++ लिखने का एक तरीका है, लेकिन, करीब निरीक्षण के दौरान इसमें शायद सी – EmFi

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