मुझे आश्चर्य है कि क्यों रूबी and
, or
&&
, ||
से कम प्राथमिकता देते हैं, और ऑपरेटर असाइन करते हैं? क्या कोई कारण है?क्या रूबी में "और", "या" ऑपरेटर के पीछे कोई ज्ञान है?
उत्तर
मेरा अनुमान है कि यह पर्ल से सीधा कैर-ओवर है। ऑपरेटर or
और and
बाद में पर्ल 5 में विशिष्ट स्थितियों के लिए जोड़ा गया था, वरीयता वांछित थी।
उदाहरण के लिए, पर्ल में, यहाँ हम चाहते हैं कि ||
, कम पूर्वता था ताकि हम लिख सकते हैं:
try to perform big long hairy complicated action || die ;
और यह सुनिश्चित करें कि ||
कार्रवाई का एक हिस्सा भी हडप जाना नहीं जा रहा था। पर्ल 5 ने or
पेश किया, ||
का एक नया संस्करण जिसमें इस उद्देश्य के लिए कम प्राथमिकता है।
रूबी में एक उदाहरण है जहाँ आप or
इस्तेमाल कर सकते हैं लेकिन नहीं ||
:
value = possibly_false or raise "foo"
यदि आप ||
इस्तेमाल किया, यह एक सिंटैक्स त्रुटि होगा।
अपने ऑपरेटरों की प्राथमिकता को नियंत्रित करने में सक्षम होने के कारण कभी-कभी उपयोगी होता है, खासकर यदि आप पठनीयता से चिंतित हैं - सशर्त बयानों में अतिरिक्त ब्रांडेसिस कभी-कभी वास्तविक तर्क को अस्पष्ट कर सकते हैं।
फ्रैंक होने के लिए, हालांकि, मुझे लगता है कि रुबी के पास बूलियन ऑपरेटर प्राथमिकता के स्तर हैं, यह ज्यादातर तथ्य इस तथ्य से उत्पन्न होता है कि मैटज़ रूबी लिखने से पहले एक पर्ल प्रोग्रामर था, और कोर सिंटैक्स और ऑपरेटरों से अधिक उधार लिया वह भाषा
हम्म, यह बताता है कि क्यों रूबी इतनी अपरिपक्व है और साथ ही बहुत अधिक फूला हुआ है। मेरे सिर को उसके चारों ओर लपेटना अभी भी मुश्किल है .. – akostadinov
उनके पास बहुत कम प्राथमिकता है ताकि ऑपरेटरों को कोष्ठक में लपेटने की आवश्यकता न हो, जैसा कभी-कभी &&
और ||
के मामले में होता है।
मेरा मानना है कि यह विचार विशेष रूप से असाइनमेंट ऑपरेटर के नीचे उन्हें प्राप्त करने के लिए है, इसलिए आप असाइनमेंट के साथ तर्क परीक्षण लिख सकते हैं लेकिन माता-पिता के बिना।
अंतर प्राथमिकता है। ||
, &&
=
से अधिक प्राथमिकता है, लेकिन and
, or
कम है। इसलिए जब आप कर सकते हैं:
a = nil || 0
आप क्या करना है जाएगा:
a = (nil or 0)
ही प्रभाव प्राप्त करने के लिए। यदि आप करते हैं:
a = nil or 0
अभिव्यक्ति का परिणाम अभी भी 0 होगा, लेकिन एक मूल्य शून्य होगा।
- 1. रूबी में "&:" ऑपरेटर की कार्यक्षमता क्या है?
- 2. रूबी में -> (स्टैब) ऑपरेटर क्या है?
- 3. रूबी रेगेक्स पीछे पीछे शून्यों के लिए
- 4. रूबी बूलियन ऑपरेटर या || अंतर
- 5. रूबी ऑपरेटर "= ~"
- 6. क्या regexp में कोई नहीं (!) ऑपरेटर है?
- 7. | के बीच क्या अंतर है और || या ऑपरेटर?
- 8. :: MyClass रूबी स्कोप ऑपरेटर क्या करता है?
- 9. क्या पर्ल या रूबी में फ्लिप-फ्लॉप ऑपरेटर के बराबर एक कार्यात्मक प्रोग्रामिंग अवधारणा है?
- 10. क्या ऑपरेटर और डिफ़ाइनप्रोपर्टी के बीच कोई प्रभावी अंतर है?
- 11. % ऑपरेटर रूबी में एन% 2 में क्या करता है?
- 12. "||" को समझना या ऑपरेटर यदि रूबी
- 13. क्या हैकेल में स्प्लिट ऑपरेटर है जैसे पायथन/रूबी?
- 14. क्या रूबी में कोई बयान है?
- 15. रूबी ऑपरेटर ओवरलोडिंग प्रश्न
- 16. क्या जावा में एक ब्लॉक में लॉजिकल ऑपरेटर या बिटवाई ऑपरेटर का उपयोग करने के बीच कोई अंतर है?
- 17. एआरबी में रूबी टर्नरी ऑपरेटर?
- 18. CAReplicatorLayer के पीछे जादू क्या है?
- 19. क्या जीसीसी में "और"/"या" बूलियन ऑपरेटर उपयोग के लिए समर्थन बंद करना संभव है?
- 20. क्या एनएसएआरएआरए के पीछे पीछे हटने का कोई आसान तरीका है?
- 21. सी ++ में ऑपरेटर -> * ऑपरेटर क्या है?
- 22. लिंक क्वेरी 'और' 'या' ऑपरेटर
- 23. ऑपरेटर बनाम> = और <=: क्या कोई प्रदर्शन अंतर है?
- 24. क्या रूबी या पर्ल में कोई अच्छी प्रक्रिया निगरानी और नियंत्रण ढांचा है?
- 25. क्या रूबी में << ऑपरेटर को ओवरराइड करने का कोई तरीका है?
- 26. क्या ऑपरेटर + और/या ऑपरेटर + = के लिए चाल semantics का उपयोग करने के लिए यह समझ में आता है?
- 27. "===" ऑपरेटर के लिए क्या है?
- 28. समानांतर असाइनमेंट ऑपरेटर रूबी
- 29. बैश में ऑपरेटर "=" और "==" के बीच क्या अंतर है?
- 30. क्या String.IsNullOrEmpty ऑपरेटर के लिए कोई मामला है?
क्या do_something या मरने के मुहावरे के लिए कोई नाम है? क्या यह रूबी में उपयोग किया जाता है? –
मुझे इसके लिए किसी भी नाम की जानकारी नहीं है, लेकिन यह रूबी में काफी आम है। – Chuck
पर्ल मरने पर भारी निर्भर करता है, जबकि रुबी जुटाने का उपयोग करता है। अपवाद का लाभ यह है कि आप इसे बचा सकते हैं। – tadman