माणिक में `न` और` `के बीच अंतर


102

मुझे याद है कि कहीं न कहीं इसे पढ़ना notऔर !अलग तरीके से मूल्यांकन किया जाता है, और मैं इसे प्रलेखन में नहीं पा सकता हूं। क्या वे पर्यायवाची हैं?


जवाबों:


143

वे लगभग पर्यायवाची हैं, लेकिन काफी नहीं। अंतर यह है कि है !की तुलना में अधिक पूर्वता है not, बहुत पसंद &&है और ||अधिक से अधिक पूर्वता के हैं andऔर or

!सभी संचालकों की सर्वोच्च प्राथमिकता है, और notसबसे कम में से एक, आप रूबी डॉक्स पर पूर्ण तालिका पा सकते हैं ।

एक उदाहरण के रूप में, विचार करें:

!true && false
=> false

not true && false
=> true

पहले उदाहरण में, !है उच्चतम पूर्वता है, तो आप को प्रभावी ढंग से कह रहे हैं false && false
दूसरे उदाहरण में, notकी तुलना में कम पूर्वता है true && false, इसलिए यह "से" स्विच falseकिया true && falseगया true

सामान्य दिशानिर्देश ऐसा प्रतीत होता है कि आपको चिपकना चाहिए !, जब तक कि आपके पास उपयोग करने का कोई विशिष्ट कारण न हो not!रूबी में अन्य भाषाओं की तरह ही व्यवहार किया जाता है, और "से कम आश्चर्यजनक" है not


6
मैंने अतीत में 'न' का इस्तेमाल किया है ताकि नकारात्मक स्थिति को आसानी से पढ़ा जा सके। मतलब अगर सशर्त की संपूर्णता को नकारा जाए तो मुझे entire नहीं ’के बजाय rather नहीं’ का उपयोग करने में सहज महसूस हुआ। मुझे यह पसंद आया जब मेरा कोड ०१
when पर

क्या आप unlessउस मामले में उपयोग कर सकते हैं ?
जैकब

1
@ जेकॉब, हाँ, निश्चित रूप से। unlessवास्तव में माणिक दुनिया में पसंदीदा नहीं है। आम सहमति यह है कि यह उस तरह से हो जाता है जब !ज्यादातर परिस्थितियों में काम करता है। मुझे यकीन है कि ऐसे मामले हैं जब तक अधिक अभिव्यंजक नहीं हो सकता है, लेकिन मैं स्पष्ट हूं।
ब्रेनन

4
मैं इससे सहमत नहीं हूं unlessनिकटतम बात हम एक आम सहमति के लिए अन्यथा कहते हैं।
एडम लाससेक

1
बस एक उदाहरण साझा करना चाहता था कि आश्चर्य की बात कैसे notहो सकती है। पायथन में, मैं कभी-कभी बूलियनों को वैरिएबल्स में असाइन करता हूं ताकि अगर-कथनों को आसानी से पढ़ा जा सके। इसका मतलब हो सकता है कि पैटर्न का उपयोग करना x = not y, जहां y कुछ जटिल है। रूबी में, x = !yकाम करता है, लेकिन x = not yहो जाता है syntax error, unexpected tIDENTIFIER, expecting '('। पूर्ववर्ती आदेश का अर्थ है कि यह असाइनमेंट ऑप के दाईं ओर काम करने के लिए कोष्ठक की आवश्यकता है x = (not y):।
एस किर्बी

13

notऑपरेटर को समझने का एक आसान तरीका यह है not true && falseकि इसे समकक्ष के रूप में देखा जाए!(true && false)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.