Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

रूबी में बूलियन लॉजिक में महारत हासिल करें: एक व्यावहारिक गाइड

बूलियन क्या है?

एक बूलियन एक मान है जिसका उपयोग लॉजिक स्टेटमेंट में यह कहने के लिए किया जाता है कि क्या कुछ सच या झूठ माना जाता है।

इसका उपयोग निर्णय लेने के लिए किया जा सकता है।

रूबी में हमारे पास बूलियन क्लास नहीं है, लेकिन हमारे पास बूलियन ऑब्जेक्ट्स हैं!

हमारे पास true और false हैं।

जो TrueClass और FalseClass के सिंगलटन ऑब्जेक्ट्स हैं।

आपको बूलियन मान मिलता है जब आप मेथड्स जैसे उपयोग करते हैं:

  • empty?
  • all?
  • match?

और बराबर चिह्न से चीजों की तुलना करते हैं:

1 == 1 # true

ध्यान रखें कि रूबी में == भी एक मेथड है, इसका मतलब है कि व्यवहार बदल सकता है इस बात पर निर्भर करता है कि यह मेथड कैसे लागू किया गया है।

ट्रूथी और फाल्सी मान

ट्रूथी मान क्या है?

यह एक मान है जिसे बूलियन संदर्भ में true माना जाता है, जैसे if स्टेटमेंट में।

रूबी में सब कुछ ट्रूथी है सिवाय इन दो के:

  • false
  • nil

ये दो मान, और केवल ये दो, हम "फाल्सी" कहते हैं।

व्यवहार में बूलियन्स

इसका मतलब है कि यदि आपके पास एक कंडीशन है...

इस तरह:

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 हैं।

इस लेख को शेयर करना न भूलें ताकि अधिक लोग इसे ढूंढ सकें 🙂

पढ़ने के लिए धन्यवाद।

  1. रूबी के साथ इंसर्शन सॉर्ट में महारत: एक चरण-दर-चरण गाइड रूबी के साथ इंसर्शन सॉर्ट में महारत: एक चरण-दर-चरण गाइड

    नोट: यह रूबी के साथ विभिन्न सॉर्टिंग एल्गोरिदम को लागू करने पर एक श्रृंखला का भाग 4 है। भाग 1 ने बबल सॉर्ट का पता लगाया, भाग 2 ने सिलेक्शन सॉर्ट का पता लगाया, और भाग 3 ने मर्ज सॉर्ट का पता लगाया। जैसा कि हम डेटा को सॉर्ट करने के लिए विभिन्न पद्धतियों का पता लगाना जारी रखते हैं, हम इंसर्शन सॉर्ट की

  1. रूबी में Dup vs Clone: ऑब्जेक्ट कॉपी करने की तकनीकों में महारत हासिल करें रूबी में Dup vs Clone: ऑब्जेक्ट कॉपी करने की तकनीकों में महारत हासिल करें

    क्या आप जानते हैं कि आप रूबी में ऑब्जेक्ट कॉपी कर सकते हैं? न केवल यह, बल्कि ऐसा करने के लिए दो अलग-अलग मेथड्स हैं! ये मेथड्स हैं: dup clone हम एक पल में अंतर का पता लगाएंगे, लेकिन पहले... आप ऑब्जेक्ट को क्लोन क्यों करना चाहेंगे? रूबी में कई ऑब्जेक्ट्स म्यूटेबल हैं, आप उन्हें बदल सकते हैं। यदि आप

  1. रूबी के फ्रीज मेथड को समझना: ऑब्जेक्ट म्यूटेबिलिटी समझाया गया रूबी के फ्रीज मेथड को समझना: ऑब्जेक्ट म्यूटेबिलिटी समझाया गया

    किसी ऑब्जेक्ट के म्यूटेबल होने का क्या अर्थ है? फैंसी शब्दों को आपको भ्रमित न करने दें, म्यूटेबिलिटी का सीधा सा अर्थ है कि किसी ऑब्जेक्ट की आंतरिक स्थिति को बदला जा सकता है। यह उन ऑब्जेक्ट्स को छोड़कर सभी ऑब्जेक्ट्स का डिफ़ॉल्ट है जिन्हें फ्रीज किया गया है, या जो विशेष ऑब्जेक्ट्स की सूची का हिस्सा ह