2010-09-29 7 views
5

क्या यह सच है कि ज्यादातर मामलों में, रूबी में, &&, ||and, or के बजाय, यह कुछ विशेष स्थितियों के लिए उपयोग करना सबसे अच्छा है।रुबी में, क्या हमें हमेशा "&&", "||" का उपयोग करना चाहिए "और", "या" के बजाय विशेष परिस्थितियों के लिए?

मुझे लगता है कि रूबी के डिजाइन सिद्धांतों में से एक कम से कम आश्चर्य संभव है, तो and, या or का उपयोग कर के रूप में वास्तव में कुछ आश्चर्य है ... इस तरह के andor तुलना में एक उच्च पूर्वता नहीं होने के रूप में है, जबकि && तुलना में एक उच्च पूर्वता है ||

तो मुझे लगता है कि ज्यादातर मामलों में, &&, || का उपयोग करें। कुछ विशेष परिस्थितियों में पता है में, यह andor का उपयोग कर, की आवश्यकता हो सकती है, लेकिन मुझे लगता है कि अगर उन, &&, || साथ intermixed अभी या बाद में यह जब अपने सहकर्मियों जो रूबी में शुरू किया था तो बहुत पहले अपने कोड को संपादित करने की जरूरत नहीं कीड़े पैदा हो सकता है ।

+2

और आपका प्रश्न क्या है? – klew

+1

प्रश्न पोस्ट का शीर्षक है –

+0

भी देखें: http://stackoverflow.com/questions/1512547/what-is-the-difference-between-perls-or-and-and-short-circuit-op –

उत्तर

7

हां। बूलियन तर्क के लिए and और or पर निर्भर होना आपके आवेदन में सूक्ष्म बग पेश करने का एक अच्छा तरीका है।

उनके पास एक जगह है, हालांकि। नियंत्रण प्रवाह ऑपरेटर के रूप में उपयोग किए जाने पर वे एक सुरक्षित और पठनीय विकल्प हैं।

redirect_to root_url and return 

मैं मूल रूप से जिस तरह से तुमने किया था जब तक मैं this excellent blog post पढ़ महसूस किया।

+1

यह एक भयानक पोस्ट है, साझा करने के लिए धन्यवाद। –

+1

'और', 'या ', और' &&' और '|| का गलतफहमी या दुरुपयोग कई भाषाओं में एक समस्या है। लोग मानते हैं कि (गलत तरीके से) कि वे प्रत्येक की प्राथमिकता को अनदेखा कर रहे हैं। रैफोमेट की तरह कहते हैं, प्रत्येक व्यक्ति का उपयोग कब करना है सूक्ष्म बग की ओर जाता है। मैं मानता हूं कि 'और' और' या' का सबसे अच्छा उपयोग फ्लो-कंट्रोल के रूप में होता है, जिससे अधिक पठनीय कोड होता है। '(' और ') 'का उदार उपयोग समस्या से बचने के लिए एक लंबा रास्ता भी जा सकता है, हालांकि यह कोड शोर की तरह दिख सकता है ... या पर्ल। –

7

पुस्तक 'द रूबी प्रोग्रामिंग लैंग्वेज' (डेविड फ्लानगन & युकिहिरो मात्सुमोतो) 'और' का उपयोग करने के दो कारण देती है।

  • पठनीयता:

    if x > 0 and y > 0 and not defined? d then d = Math.sqrt(x*x +y*y) end

  • कम वरीयता का बेहतर इस्तेमाल कर:

    if a = get_from_db(x) and b = get_from_db(y) then do_stuff_with_true_values(a, b) end

(मेरे द्वारा अनुकूलित कोड) पिछले एक बस wouldnके साथ काम नहीं करते हैं& '।

व्यक्तिगत रूप से, मैं का उपयोग करें 'और' और 'या', संदेह के मामले में कोष्ठक के साथ संयुक्त readability.-

+0

+1 "कोष्ठक के साथ संयुक्त" के लिए +1 –

2

क्योंकि and, or & not&&, || और ! की तुलना में कम पूर्वता है यह के लिए।

क्यों? क्योंकि यह पर्ल से पैदा होता है।

open my $fh, "<", $filename or die $!; 

आप or|| साथ फिर उस बयान इस तरह पार्स की जाने वाली बदलते हैं:

open my $fh, "<", ($filename || die $!); 

कौन सा अच्छा नहीं है Larry Wall की जा रही एक भाषाविद् काम करने के लिए निम्न चाहते थे!

तो पर्ल & Ruby जैसी भाषाओं जहां कोष्ठक तो वैकल्पिक हैं के लिए इस समाधान था। नहीं तो आप लिखने के लिए की आवश्यकता होगी:

open(my $fh, "<", $filename) || die $!; 

देखें perlop "Logical Not, And, or, Defined or, and Exclusive Or & & Logical operators in Perl and Ruby पूर्ण शेक के लिए नीचे।

/I3az/

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

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