2011-06-07 9 views
6

मुझे थोड़ा पॉज़ फेंक दिया गया है, और मुझे यकीन नहीं है कि जवाब क्या है।ट्रिस्टेट मूल्य - क्या कोई सम्मेलन है?

मूल रूप से - क्या एक परंपरा है जो ट्रिस्टेट डेटा-प्रकारों में उपयोग करने के लिए मूल्य है? कुछ आसपास googling कर रहा है, यह देखने के लिए नहीं है वहाँ की तरह: मैंने देखा है:

  • -1 = झूठी, 0 = जाना जाता है,/अपरिभाषित +1 = सच
  • 0 = झूठी, +1 = यह सच है, +2 = अपरिभाषित जाना जाता नहीं/
  • -1 = नहीं जाना जाता है/अपरिभाषित, 0 =, झूठी +1 = सच

..amongst अन्य शामिल हैं। यदि कोई है तो मैं एक प्रसिद्ध सम्मेलन का उपयोग करूंगा। अन्यथा मैं :-) यह अच्छी तरह से हो सकता है वहाँ कोई सही जवाब है एक बना देंगे, लेकिन सिर्फ सोचा था कि मैं थोड़ा और गहराई में होगी ...

संपादित
मिले इस एक के साथ-साथ कि Microsoft seem to use में हालिया कोड: -1 = सत्य, 0 = झूठा, 2 = ज्ञात नहीं है। मुझे लगता है कि 2 == अज्ञात का अर्थ यह है कि यह डीबगर/डंप/मेमोरी इत्यादि में कच्चे मूल्यों को देखते समय + 1/-1 की व्याख्या करने पर अस्पष्टता को हटा देता है। विचित्र रूप से पर्याप्त, यह विकल्प केवल इस कारण के लिए अपील करता है (हटा देता है भूलने का मौका 1 का कौन सा बदलाव 'सच' है)।

+1

बीच वाला मध्यस्थता दिखता है; एक ट्रिस्टेट जहां दो राज्य एक ही हैं ...;) – Guffa

+0

@ गुफा - मेरे लिए नहीं। मैं अक्सर विंडोज एपीआई के साथ काम करता हूं और ज्यादातर मामलों में वे 0 को गलत स्थिति के रूप में उपयोग करते हैं। यही कारण है कि मुझे तीसरा मामला पसंद है जहां 0 = झूठी। –

+0

@daemon_x: मुझे नहीं लगता कि आप मेरी टिप्पणी पूरी तरह से पढ़ते हैं ... – Guffa

उत्तर

3

मेरे ज्ञान के लिए, इसके लिए कोई सम्मेलन नहीं है।

वहाँ एक भी सम्मेलन एक बूलियन मान के लिए नहीं है, सबसे आम हैं:

  • 0 = झूठी, -1 = सच
  • 0 = झूठी, 1 = सच

एक और आम (लेकिन सार्वभौमिक) सम्मेलन प्रासंगिक नहीं होगा जो अनिर्धारित मानों के लिए -1 का उपयोग है।

आप अपरिभाषित के लिए -1 का उपयोग करना चुनते हैं, तो आप के लिए 0/1 इस्तेमाल कर सकते हैं झूठी/यह सच है:

  • -1 = अपरिभाषित
  • 0 = झूठी
  • 1 = सच

और स्वाभाविक रूप से मुझे यह उल्लेख करना होगा कि तीसरा राज्य निश्चित रूप से अनिर्धारित/अज्ञात नहीं होना चाहिए, लेकिन FileNotFound। ;)

+0

यूनिक्स शैल भी 0 = सही, कुछ और = गलत का उपयोग करते हैं। यह आंशिक रूप से आप सी में 'वापसी 0' लिखते हैं; क्योंकि 0 का रिटर्न वैल्यू का मतलब है कि सब कुछ ठीक था और कुछ और मतलब है कि कुछ बुरा था। – ShreevatsaR

+0

मैं बुलियन को काफी सार्वभौमिक नहीं होने के लिए प्रयोग किया जाता है, लेकिन 0 0 झूठा * आम तौर पर सार्वभौमिक है। इस प्रकार यह आमतौर पर यह मानना ​​सुरक्षित है कि गैर-शून्य सत्य है (कार्यान्वयन के बावजूद)। शैल एक लाल हेरिंग हैं, वे कट्टरपंथी बुलियन नहीं हैं; वापसी मान त्रुटि कोड है, 0 आमतौर पर "कोई त्रुटि नहीं" का अर्थ है, और कोई अन्य मान वास्तव में त्रुटि के बारे में इंगित करता है। –

+0

+1 क्लासिक^एच^एच^एच^एच^एच क्लब्टिक दैनिक डब्ल्यूटीएफ (मैं टिप्पणियों में इसका उल्लेख करने जा रहा था) के लिए +1 –

1

मैं कहूंगा कि सम्मेलन की तरह कुछ भी नहीं है, लेकिन मैं आपके द्वारा उल्लेख किए गए तीसरे मामले को पसंद करूंगा क्योंकि मैंने इसे कई बार उपयोग में देखा है।

Value  State 
---------- ---------- 
-1   Undefined 
    0   False 
+1   True 

मैं पहले दो मामलों क्योंकि शुद्ध बूलियन राज्यों ज्यादातर 0 = False के रूप में निर्धारित कर रहे हैं और 0 <> True तो यह थोड़ा भ्रमित हो सकता है पसंद करते हैं नहीं होगा।

3

आपके द्वारा संलग्न अर्थपूर्ण अर्थों के बावजूद, मैं आपके तीन मानों को एक नकारात्मक संख्या, एक सकारात्मक संख्या और शून्य के रूप में चुनूंगा।यह केवल एक एकल परीक्षण और शाखा (> 0, < 0, == 0,> = 0, < = 0, 0 = 0 के साथ 3 संभावित मानों के प्रत्येक संभावित 1- या 2-तत्व सबसेट में सदस्यता के लिए इष्टतम परीक्षण की अनुमति देता है!)।

0

यदि आप int के साथ त्रि-राज्य बूल के लिए एक विकल्प की तलाश में हैं, तो आप मानकों के बारे में चिंता किए बिना हमेशा nullable boolean रख सकते हैं। कुछ ऐसा है, सी # bool? triState में। इसमें मूल्य सही, झूठे या शून्य हो सकते हैं जिन्हें अज्ञात माना जा सकता है - लेकिन मुझे लगता है कि यह वह नहीं है जिसे आप ढूंढ रहे हैं।

मुझे सम्मेलन के बारे में पता नहीं है। निश्चित रूप से यहां दिए गए उत्तरों से नहीं। मुझे तुम्हारा तीसरा पसंद है।

लेकिन एक अलग दृष्टिकोण है, मेरी पसंद होगा:

{ True, Unknown, False } => 0, 1, 2 // going by enum like values... 

संपादित करें: @LarsTech द्वारा एक अच्छा समय के बाद, मैं स्पष्ट करना चाहिए। अगर मुझे पता है कि एक चर के लिए दो से अधिक मूल्य हो सकते हैं तो मैं इसे एक enum के रूप में सोचता हूं और इसलिए मैं इसे {0, 1, 2} में अनुवाद कर सकता हूं। मैं हमेशा इस तरह के मूल्यवान मूल्यों के लिए एक पैटर्न का पालन करता हूं: "अच्छा, ठीक है, गरीब"। यह मेरे लिए स्वाभाविक रूप से आता है, लेकिन कई लोगों के लिए "0" का स्वागत नहीं है। एक हमेशा एक रिवर्स ऑर्डर कर सकता है।

+0

आपका "पिक" सही = 0 बना देगा, बाकी दुनिया ने फैसला किया है झूठी हो – LarsTech

+0

@ लार्सटेक स्वीकृत सत्य = 0 पारंपरिक नहीं है, लेकिन यह अभी भी रुबी और लुआ और बैश स्क्रिप्ट्स जैसी भाषाओं में एक जगह पाता है। इस धागे पर स्वीकार्य उत्तर यह भी बताता है। मुझे यह उल्लेख करने की आवश्यकता नहीं है कि सी दुभाषिया सफलता को दर्शाने के लिए आंतरिक रूप से कैसे लेता है (हालांकि स्पष्ट रूप से सत्य का अनुवाद नहीं करता है)। कुछ ऐसा ही है, मुझे डिजिटल सिग्नल एन्कोडिंग तकनीकों के बारे में कॉलेज में सीखना याद है, जहां 0 उच्च वोल्टेज को दर्शाता है। – nawfal

+0

@ लार्सटेक लेकिन मेरे बिंदु पर आ रहा है, यह मेरे लिए भ्रमित होगा, यह भी सही और गलत का मामला था और उन्हें क्रमशः 0 और 1 असाइन किया गया था। लेकिन यहां ओपी एक 3 राज्य सम्मेलन के लिए पूछताछ कर रहा है, अगर मैं एक enum परिप्रेक्ष्य से सोच सकता हूं तो मैं अपने पिक के साथ सहज हूं। Enums 2 राज्य आवश्यकताओं से अधिक हैंडलिन का सबसे अच्छा काम करता है और मैं कहूंगा कि किसी को इसकी enum की तरह सोचना चाहिए और इसलिए "0,1,2" एक अच्छा विकल्प है। यह सिर्फ मुझे हो सकता है कि जो enums में एक सम्मेलन प्यार करता है जैसे: बहुत अच्छा, अच्छा, काफी, नहीं, मैटर, बुरा, pitfall। मैं आमतौर पर इसके लिए जाता हूं। चूंकि एक सम्मेलन नहीं है, यह मेरा विचार है। – nawfal

संबंधित मुद्दे