2009-09-16 3 views

उत्तर

15

मेरा अनुमान है कि यह पर्ल से सीधा कैर-ओवर है। ऑपरेटर or और and बाद में पर्ल 5 में विशिष्ट स्थितियों के लिए जोड़ा गया था, वरीयता वांछित थी।

उदाहरण के लिए, पर्ल में, यहाँ हम चाहते हैं कि ||, कम पूर्वता था ताकि हम लिख सकते हैं:

try to perform big long hairy complicated action  || die ; 

और यह सुनिश्चित करें कि || कार्रवाई का एक हिस्सा भी हडप जाना नहीं जा रहा था। पर्ल 5 ने or पेश किया, || का एक नया संस्करण जिसमें इस उद्देश्य के लिए कम प्राथमिकता है।

रूबी में एक उदाहरण है जहाँ आप or इस्तेमाल कर सकते हैं लेकिन नहीं ||:

value = possibly_false or raise "foo" 

यदि आप || इस्तेमाल किया, यह एक सिंटैक्स त्रुटि होगा।

+0

क्या do_something या मरने के मुहावरे के लिए कोई नाम है? क्या यह रूबी में उपयोग किया जाता है? –

+0

मुझे इसके लिए किसी भी नाम की जानकारी नहीं है, लेकिन यह रूबी में काफी आम है। – Chuck

+0

पर्ल मरने पर भारी निर्भर करता है, जबकि रुबी जुटाने का उपयोग करता है। अपवाद का लाभ यह है कि आप इसे बचा सकते हैं। – tadman

4

अपने ऑपरेटरों की प्राथमिकता को नियंत्रित करने में सक्षम होने के कारण कभी-कभी उपयोगी होता है, खासकर यदि आप पठनीयता से चिंतित हैं - सशर्त बयानों में अतिरिक्त ब्रांडेसिस कभी-कभी वास्तविक तर्क को अस्पष्ट कर सकते हैं।

फ्रैंक होने के लिए, हालांकि, मुझे लगता है कि रुबी के पास बूलियन ऑपरेटर प्राथमिकता के स्तर हैं, यह ज्यादातर तथ्य इस तथ्य से उत्पन्न होता है कि मैटज़ रूबी लिखने से पहले एक पर्ल प्रोग्रामर था, और कोर सिंटैक्स और ऑपरेटरों से अधिक उधार लिया वह भाषा

+0

हम्म, यह बताता है कि क्यों रूबी इतनी अपरिपक्व है और साथ ही बहुत अधिक फूला हुआ है। मेरे सिर को उसके चारों ओर लपेटना अभी भी मुश्किल है .. – akostadinov

5

उनके पास बहुत कम प्राथमिकता है ताकि ऑपरेटरों को कोष्ठक में लपेटने की आवश्यकता न हो, जैसा कभी-कभी && और || के मामले में होता है।

2

मेरा मानना ​​है कि यह विचार विशेष रूप से असाइनमेंट ऑपरेटर के नीचे उन्हें प्राप्त करने के लिए है, इसलिए आप असाइनमेंट के साथ तर्क परीक्षण लिख सकते हैं लेकिन माता-पिता के बिना।

7

अंतर प्राथमिकता है। ||, &&= से अधिक प्राथमिकता है, लेकिन and, or कम है। इसलिए जब आप कर सकते हैं:

a = nil || 0 

आप क्या करना है जाएगा:

a = (nil or 0) 

ही प्रभाव प्राप्त करने के लिए। यदि आप करते हैं:

a = nil or 0 

अभिव्यक्ति का परिणाम अभी भी 0 होगा, लेकिन एक मूल्य शून्य होगा।

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