बूलियन क्या है?
एक बूलियन एक मान है जिसका उपयोग लॉजिक स्टेटमेंट में यह कहने के लिए किया जाता है कि क्या कुछ सच या झूठ माना जाता है।
इसका उपयोग निर्णय लेने के लिए किया जा सकता है।
रूबी में हमारे पास बूलियन क्लास नहीं है, लेकिन हमारे पास बूलियन ऑब्जेक्ट्स हैं!
हमारे पास true और false हैं।
जो TrueClass और FalseClass के सिंगलटन ऑब्जेक्ट्स हैं।
आपको बूलियन मान मिलता है जब आप मेथड्स जैसे उपयोग करते हैं:
empty?all?match?
और बराबर चिह्न से चीजों की तुलना करते हैं:
1 == 1 # true
ध्यान रखें कि रूबी में == भी एक मेथड है, इसका मतलब है कि व्यवहार बदल सकता है इस बात पर निर्भर करता है कि यह मेथड कैसे लागू किया गया है।
ट्रूथी और फाल्सी मान
ट्रूथी मान क्या है?
यह एक मान है जिसे बूलियन संदर्भ में true माना जाता है, जैसे if स्टेटमेंट में।
रूबी में सब कुछ ट्रूथी है सिवाय इन दो के:
falsenil
ये दो मान, और केवल ये दो, हम "फाल्सी" कहते हैं।
व्यवहार में बूलियन्स
इसका मतलब है कि यदि आपके पास एक कंडीशन है...
इस तरह:
if bacon puts "we got bacon" end
रूबी स्ट्रिंग प्रिंट करने से पहले जांचता है कि bacon ट्रूथी है (कुछ भी लेकिन false / nil)।
दूसरे शब्दों में:
यदि आप bacon पर मेथड नहीं कॉल कर रहे हैं तो आपको nil चेक करने की आवश्यकता नहीं है।
सेफ नेविगेटर
कभी-कभी आप ऑब्जेक्ट पर एक मेथड कॉल करना चाहते हैं।
इस तरह:
if bacon.stock # ... end
यदि bacon nil है तो यह आपको एरर देगा, इससे बचने के लिए आप निम्न कर सकते हैं...
उदाहरण:
if bacon&.stock # ... end
यह &. सेफ नेविगेशन ऑपरेटर कहलाता है और इसे रूबी 2.3 में पेश किया गया था।
बूलियन मेथड्स
क्या आपने इन मेथड्स को देखा है जो प्रश्न चिह्न में समाप्त होते हैं?
empty? की तरह।
हम इन्हें "प्रेडिकेट मेथड्स" कहते हैं और कन्वेंशन के अनुसार वे हमेशा या तो true या false लौटाते हैं।
आप अपने खुद के लिख सकते हैं:
def published? # ... end def ready? # ... end
यह एक बढ़िया पैटर्न है जो आपके कोड को अधिक रूबी जैसा महसूस कराएगा।
बूलियन पैरामीटर्स एक अच्छा विचार नहीं हैं
हमने अभी बूलियन मेथड्स को कवर किया है, जो बहुत अच्छे हैं, लेकिन आप जो बचना चाहते हैं वह है बूलियन पैरामीटर्स।
उदाहरण:
def bacon(raw) end bacon(false)
जब आप bacon(false) को देखते हैं तो आपको कोई अंदाजा नहीं होता कि यह false क्या मायने रखता है।
आपको यह पता लगाने के लिए कोड में खुदाई करनी होगी।
उसके ऊपर, एक बूलियन मान का मतलब है कि आपका मेथड आवश्यकता से अधिक जटिल होने वाला है।
समाधान?
मेथड को दो में विभाजित करें, या अपने कोड को इस तरह डिज़ाइन करें जहां इसकी आवश्यकता न हो।
बूलियन लॉजिक
TrueClass और FalseClass कुछ मेथड्स लागू करते हैं।
जैसे to_s, और inspect।
लेकिन अधिक दिलचस्प हैं:
&|^
ये अजीब दिखने वाली मेथड्स क्या हैं?
बूलियन लॉजिक।
यहाँ एक बूलियन लॉजिक टेबल है:
| नाम | सिंबल | TRUE / TRUE | TRUE / FALSE |
|---|---|---|---|
| AND | & | true | false |
| OR | | | true | true |
| XOR | ^ | false | true |
उदाहरण:
true & true
हालांकि हम अक्सर अपने कोड में बूलियन लॉजिक का उपयोग नहीं करते हैं लेकिन यह कंप्यूटर कैसे काम करते हैं इसकी नींव बनाता है, इसलिए इसके बारे में जानना दिलचस्प है।
सारांश
आपने रूबी में बूलियन मानों के बारे में सीखा! याद रखें कि सब कुछ "ट्रूथी" है, केवल अपवाद false और nil हैं।
इस लेख को शेयर करना न भूलें ताकि अधिक लोग इसे ढूंढ सकें 🙂
पढ़ने के लिए धन्यवाद।