2012-05-29 6 views
6

में "वापसी एक्स अगर एक्स" के लिए शॉर्टेंड रूबी के बारे में मुझे एक चीज़ यह है कि आप चीजों को सबसे कम संभव तरीके से व्यक्त कर सकते हैं।रुबी

मुझे पता है कि एक कर सकते हैं, जब

x ||= a 
# instead of 
x = a unless x 
# which is 
x = x || a 

बताए वहाँ return के लिए एक एनालॉग रूप है?

# instead of 
return x if x 

मैं केवल एक बार "कहते हैं कि" करने के लिए x कोशिश कर रहा हूँ। This question सिर्फ लौटने (कुछ भी नहीं) के बारे में पूछता है, लेकिन मुझे नहीं लगता कि शून्य के अलावा कुछ और लौटने पर इसे कैसे किया जाए।

+0

'एक्स एक्स' के साथ 'वापसी x अगर x' को बदलने के साथ क्या गलत है? – Zabba

+2

यह @Zabba जरूरी पिछले बयान –

+3

शायद मेरे गणित कौशल खराब है नहीं है, लेकिन क्या आपके पास पहले से एक एक लाइनर नहीं है? –

उत्तर

4

मैं बस के बारे में कुछ अपने दूसरे के लिए कोई आशुलिपि मौजूद है कर रहा हूँ उदाहरण-और न ही एक संशोधित किए बिना लिखा जा सकता है रूबी वाक्य रचना-क्योंकि यह एक काफी आम मुहावरा नहीं है। क्षमा करें, भाई, लेकिन ऐसा लगता है कि आपको इस पर वर्बोज़ होना होगा। (हालांकि, वास्तव में, जहां तक ​​वर्बोजिटी जाती है, यह सब बुरा नहीं है।)

(नोट भी, कि पहला उदाहरण बिल्कुल सही नहीं है: x ||= ax = x || a के बराबर है, जो भी हो सकता है x = a unless x के रूप में व्यक्त किया गया।)

+1

आप सही हैं, मैंने बस इसे सही किया है। चूंकि आप "बस कुछ निश्चित" हैं, इसलिए मैं थोड़ा इंतजार करूंगा और इसे उत्तर के रूप में स्वीकार करूंगा जब तक कि किसी और के पास कोई नहीं है। तो 'उत्तर = तुम्हारा; उत्तर || = new_answer', या मुझे कहना चाहिए कि 'new_answer वापस करें अगर new_answer; तुम्हारा; ';) –

-1

यदि आप ब्लॉक कोड में अंतिम विवरण देते हैं तो आप वापसी को छोड़ सकते हैं।

उदाहरण

irb(main):002:0> def b(c) 
irb(main):003:1> c if c 
irb(main):004:1> end 
=> nil 
irb(main):005:0> b(4) 
=> 4 
irb(main):006:0> b(nil) 
=> nil 
irb(main):007:0> b(true) 
=> true 
irb(main):008:0> b(false) # TADA!!! 
=> nil 
+0

मुझे यकीन है कि 'return' छोड़ सकते हैं अगर यह मेरा आखिरी बयान है, लेकिन मेरा इरादा' कहना c' केवल एक बार किया गया था। और मेरे मामले में, मैं भी अंतिम वक्तव्य को कवर करना चाहता हूं! –