रूबी (और कई अन्य भाषाओं) में बहुत सारे मूल्य हैं जो एक बुलियन संदर्भ में true
का मूल्यांकन करते हैं, और एक मुट्ठी भर जो झूठी मूल्यांकन करेगा। रुबी में, the only two things that evaluate to false
are false
(itself) and nil
।
आप कुछ नकारना हैं, कि एक बूलियन संदर्भ बाध्य करती है। बेशक, यह भी इसे अस्वीकार करता है। यदि आप इसे दोबारा अस्वीकार करते हैं, तो यह बूलियन संदर्भ को मजबूर करता है, लेकिन उचित बूलियन मान देता है।
उदाहरण के लिए:
"hello" #-> this is a string; it is not in a boolean context
!"hello" #-> this is a string that is forced into a boolean
# context (true), and then negated (false)
!!"hello" #-> this is a string that is forced into a boolean
# context (true), and then negated (false), and then
# negated again (true)
!!nil #-> this is a false-y value that is forced into a boolean
# context (false), and then negated (true), and then
# negated again (false)
अपने उदाहरण में, signed_in?
विधि (के रूप में ?
चरित्र द्वारा सम्मेलन द्वारा इंगित) एक बूलियन मान लौटना चाहिए। इस मान को तय करने के लिए उपयोग किए जाने वाले आंतरिक तर्क यह देखने के लिए जांच कर रहे हैं कि current_user
चर सेट है या नहीं। यदि यह सेट है, तो यह एक बूलियन संदर्भ में true
का मूल्यांकन करेगा। यदि नहीं, तो यह गलत के रूप में मूल्यांकन करेगा। दोहरी अस्वीकृति वापसी मूल्य को बूलियन होने के लिए मजबूर करता है।
क्या आपने प्रश्नों को देखा, जो आपको प्रश्न के शीर्षक टाइप करने के बाद दिया गया था? – Nakilon
हाँ, वहां कुछ भी नहीं था। मुझे वास्तव में दूसरा सवाल बताते हुए एक ही सवाल मिला, लेकिन मुझे "डबल बैंग" से खोजना पड़ा जो कि आप सोच सकते हैं उतना स्पष्ट नहीं है। – Vitaly
हाँ, इसी तरह के प्रश्न एल्गोरिदम आसानी से धोखा दिया जाता है जब शीर्षक के महत्वपूर्ण भाग विराम चिह्न हैं। – pkaeding