दिलचस्प पोस्ट
इमॅप को सी # में एक्सेस करना बॉक्स लेआउट को साझा किया जा सकता है त्रुटि नहीं सी ++ फ़ंक्शन में एक स्थिर वैरिएबल का जीवनकाल क्या है? Jquery लोड () केवल फ़ायरफ़ॉक्स में काम कर रहा है? एक <चयन करें> jQuery का उपयोग करने के लिए विकल्प जोड़ना? गिट – 'मान-अपरिवर्तित' और 'स्काइप-वर्कट्री' के बीच अंतर सीएसएस सामग्री का उपयोग कर HTML संस्थाओं को जोड़ना मैं विंडो में एक चर में एक कमांड के परिणाम कैसे प्राप्त करूं? जब उपयोगकर्ता स्क्रीन को पिन कर देता है तो एक UIImage ऑब्जेक्ट ज़ूम इन / आउट कैसे करें? जावा में मौद्रिक मूल्यों का प्रतिनिधित्व करना एंड्रॉइड स्टूडियो त्रुटि: त्रुटि: CreateProcess त्रुटि = 216,% 1 का यह संस्करण आप चला रहे विंडोज के संस्करण के साथ संगत नहीं है यह पता लगाया जा रहा है कि किसी वेब पेज में कौन से फ़ॉन्ट का उपयोग किया गया था iPhone / iPad के लिए जावास्क्रिप्ट स्क्रॉल ईवेंट? प्रति समूह में एकाधिक चर समेकित / सारांश (अर्थात् राशि, माध्य, आदि) स्प्रिंगबूट सुरक्षा हैरोल काम नहीं कर रहा है

मैं पर्ल में बूलियन चर का उपयोग कैसे करूं?

मैं प्रयास कर चुका हूं:

$var = false; $var = FALSE; $var = False; 

इनमें से कोई भी काम नहीं है मुझे त्रुटि संदेश मिलता है

  "सच्चा सब्स" उपयोग में होने पर बियरवुड "झूठी" की अनुमति नहीं है 

वेब के समाधान से एकत्रित समाधान "मैं पर्ल में बूलियन चर का उपयोग कैसे करूं?"

पर्ल में, निम्नलिखित शर्तों में झूठ का मूल्यांकन किया जाता है:

 0 '0' undef '' # Empty scalar () # Empty list ('') 

बाकी सच्चे हैं। true या false लिए कोई बैरवे नहीं है

झूठे की सबसे पूर्ण, संक्षिप्त परिभाषा मैं आया हूं:

जो कुछ भी रिक्त स्ट्रिंग को स्ट्रिप करता है या स्ट्रिंग `0` झूठा है। बाकी सब सच है

इसलिए, निम्न मान झूठे हैं:

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

ध्यान रखें कि एक रिक्त सूची का शाब्दिक स्केलर संदर्भ में एक अपरिभाषित मान का मूल्यांकन करता है, इसलिए यह कुछ गलत मानता है।


"सही शून्य" पर एक नोट

जबकि 0 स्ट्रिंग करने वाली संख्या झूठी होती है, शून्य को सूचीबद्ध करने वाले स्ट्रिंग जरूरी नहीं होते हैं। केवल झूठी तार 0 और खाली स्ट्रिंग हैं। कोई अन्य स्ट्रिंग, भले ही वह शून्य के लिए सूचीबद्ध हो, यह सच है।

निम्नलिखित तार हैं जो एक बूलियन के रूप में सत्य हैं और एक संख्या के रूप में शून्य है।

  • एक चेतावनी के बिना:
    • "0.0"
    • "0E0"
    • "00"
    • "+0"
    • "-0"
    • " 0"
    • "0\n"
    • ".0"
    • "0."
    • "0 but true"
    • "\t00"
    • "\n0e1"
    • "+0.e-9"
  • एक चेतावनी के साथ:
    • किसी भी स्ट्रिंग जिसके लिए Scalar::Util::looks_like_number गलत देता है। (जैसे "abc" )

पर्ल में एक देशी बूलीयन प्रकार नहीं है, लेकिन आप एक ही व्यवहार प्राप्त करने के लिए पूर्णांक या स्ट्रिंग्स की तुलना कर सकते हैं। एलन का उदाहरण यह करने का एक अच्छा तरीका है कि पूर्णांक की तुलना यहाँ एक उदाहरण है

 my $boolean = 0; if ( $boolean ) { print "$boolean evaluates to true\n"; } else { print "$boolean evaluates to false\n"; } 

मैंने अपने कुछ कार्यक्रमों में जो कुछ किया है, वह एक समान व्यवहार को निरंतर उपयोग करते हुए जोड़ा गया है:

 #!/usr/bin/perl use strict; use warnings; use constant false => 0; use constant true => 1; my $val1 = true; my $val2 = false; print $val1, " && ", $val2; if ( $val1 && $val2 ) { print " evaluates to true.\n"; } else { print " evaluates to false.\n"; } print $val1, " || ", $val2; if ( $val1 || $val2 ) { print " evaluates to true.\n"; } else { print " evaluates to false.\n"; } 

"स्थिर निरंतर" में चिह्नित लाइनें एक स्थिर नाम को परिभाषित करती हैं जो हमेशा 1 के लिए मूल्यांकन करती हैं, और निरंतर नामित झूठी है जो हमेशा 0 के आधार पर मूल्यांकन करती हैं। पर्ल में स्थिरांक परिभाषित होने के कारण, कोड की निम्न पंक्ति भी विफल हो जाती हैं:

 true = 0; true = false; 

त्रुटि संदेश को कुछ कहना चाहिए "स्केलर असाइनमेंट में लगातार सुधार नहीं किया जा सकता।"

मैंने देखा कि स्ट्रिंग्स की तुलना करने के बारे में आपने एक टिप्पणी में पूछा था। आपको पता होना चाहिए कि पर्ल स्ट्रैंगल और स्केलर वैरिएबल में संख्यात्मक प्रकार को जोड़ती है, इसलिए स्ट्रिंग्स और नंबरों की तुलना करने के लिए आपके पास अलग सिंटैक्स हैं:

 my $var1 = "5.0"; my $var2 = "5"; print "using operator eq\n"; if ( $var1 eq $var2 ) { print "$var1 and $var2 are equal!\n"; } else { print "$var1 and $var2 are not equal!\n"; } print "using operator ==\n"; if ( $var1 == $var2 ) { print "$var1 and $var2 are equal!\n"; } else { print "$var1 and $var2 are not equal!\n"; } 

इन ऑपरेटर के बीच का अंतर पर्ल में भ्रम का एक बहुत ही सामान्य स्रोत है।

मैं use boolean; की सलाह देता हूं use boolean; । आपको सीपीएएन से बूलियन मॉड्यूल इंस्टॉल करना होगा।

मैं एक ट्यूटोरियल पर आया था जिसमें पर्ल के बारे में सही और झूठी बातें हैं । यह बताता है कि:

स्केलर मानों के बाद गलत माना जाता है:

  • undef – अपरिभाषित मूल्य
  • 0 संख्या 0, भले ही आप इसे 000 या 0.0 के रूप में लिखते हैं
  • '' खाली स्ट्रिंग
  • '0' स्ट्रिंग जिसमें एक 0 अंक होते हैं

अन्य सभी स्केलर मान, जिनमें निम्न शामिल हैं, सत्य हैं:

  • 1 किसी भी गैर -0 संख्या
  • ' ' इसमें एक जगह के साथ स्ट्रिंग
  • '00' स्ट्रिंग में दो या अधिक 0 वर्ण
  • "0\n" एक 0 एक नई लाइन के बाद
  • 'true'
  • 'false' हाँ, यहां तक ​​कि स्ट्रिंग 'झूठी' सच को मूल्यांकन करती है

एक और अच्छा ट्यूटोरियल है जो पर्ल के बारे में और गलत के बारे में बताता है।

मेरा पसंदीदा हमेशा रहा है

 use constant FALSE => 1==0; use constant TRUE => not FALSE; 

जो आंतरिक प्रतिनिधित्व से पूरी तरह से स्वतंत्र है।

बुलियन मूल्यों के लिए बॉब द्वारा दिया गया सुंदर विवरण: सही या गलत है? एक त्वरित संदर्भ गाइड

विभिन्न मूल्यों के लिए सत्य परीक्षण

  Result of the expression when $var is: Expression | 1 | '0.0' | a string | 0 | empty str | undef --------------------+--------+--------+----------+-------+-----------+------- if( $var ) | true | true | true | false | false | false if( defined $var ) | true | true | true | true | true | false if( $var eq '' ) | false | false | false | false | true | true if( $var == 0 ) | false | true | true | true | true | true 

निम्न फ़ाइल उपसर्ग का उपयोग करें, यह आपके perl स्क्रिप्ट eTRUE और ईफल्स में जोड़ देगा, यह वास्तव में असली (!) सच और गलत होगा (जैसे जावा)

 #!/usr/bin/perl use strict; use warnings; use constant { #real true false, compatible with encode_json decode_json for later (we don't want field:false... will be field:0...) eTRUE => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ), eFALSE => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ) }; 

वास्तव में, कुछ कारणों से आपको इसका उपयोग क्यों करना चाहिए

मेरा कारण यह है कि JSON के साथ काम करना, मुझे कुंजियों के लिए मूल्य के रूप में 0 और 1 मिल गया है, लेकिन यह हैक सुनिश्चित करेगा कि सही स्क्रिप्ट आपके पास रखी गई है।