आह, क्या आपको सिर्फ एक अच्छा टर्नरी दुरुपयोग पसंद नहीं है? :) पर विचार करें निम्नलिखित अभिव्यक्ति:सी # में टर्नरी ऑपरेटर सहयोगीता - क्या मैं इस पर भरोसा कर सकता हूं?
true ? true : true ? false : false
आप में से जो लोग अब पूरी तरह से उलझन में हैं, मैं आपको बता सकता है कि इस सच मूल्यांकन करता है। दूसरे शब्दों में, यह इसके बराबर है:
true ? true : (true ? false : false)
लेकिन क्या यह विश्वसनीय है? कि कुछ परिस्थितियों में यह यह करने के लिए नहीं आएगा मैं कुछ किया जा सकता है:
(true ? true : true) ? false : false
कुछ कह सकते हैं - अच्छी तरह से, बस कोष्टक तो जोड़ने या इसे पूरी तरह उपयोग नहीं करते हैं - सब के बाद, यह एक अच्छी तरह से ज्ञात तथ्य है वह टर्नरी ऑपरेटर बुराई हैं!
निश्चित रूप से वे हैं, लेकिन कुछ परिस्थितियां हैं जब वे वास्तव में समझ में आती हैं। जिज्ञासु लोगों के लिए - मैं कोड लिख रहा हूं जो गुणों की एक श्रृंखला द्वारा दो वस्तुओं की तुलना करता है। यह बहुत अच्छा होगा अगर मैं इसे इस तरह लिखता हूं:
obj1.Prop1 != obj2.Prop1 ? obj1.Prop1.CompareTo(obj2.Prop1) :
obj1.Prop2 != obj2.Prop2 ? obj1.Prop2.CompareTo(obj2.Prop2) :
obj1.Prop3 != obj2.Prop3 ? obj1.Prop3.CompareTo(obj2.Prop3) :
obj1.Prop4.CompareTo(obj2.Prop4)
साफ़ और संक्षिप्त। लेकिन यह पहले मामले की तरह काम कर रहे टर्नरी ऑपरेटर सहयोगीता पर निर्भर करता है। Parenthesis सिर्फ स्पेगेटी इसे बाहर कर देगा।
तो - क्या यह कहीं भी निर्दिष्ट है? मुझे यह नहीं मिला।
क्या आप सुनिश्चित हैं कि आपका कोड आपका मतलब है? जैसे अगर obj1.Prop1! = obj2.Prop1 लेकिन obj1.Prop1.compareTo (obj2.Prop1) == 0, आपका कोड Prop2 की जांच करने के बजाय आगे बढ़ने के बजाय 0 उत्पन्न करेगा। क्या इसका इरादा है? – atzz
सिर्फ इसलिए कि आप जिस तरह से दिखते हैं उसे सही नहीं बनाते हैं, और निश्चित रूप से इसे पठनीय नहीं बनाते हैं .. किसी और को उस कोड को देखने से कम से कम मानसिक रूप से ब्रांड्स को जोड़ना होगा, तो सभी को एक पक्ष क्यों न करें और कोड की उन पंक्तियों को दोबारा दोहराएं। –
atzz - मान आदिम प्रकार हैं - यह तब तक नहीं होना चाहिए जब तक कि स्पेसटाइम में कोई वार न हो। मिकी डी - सुझाव? ध्यान रखें कि यह लैम्ब्डा अभिव्यक्ति के लिए है, इसलिए मैं इसे छोटा रखना चाहता हूं। इसके अलावा मैं टिप्पणियां जोड़ूंगा, जो कोड को देखने वाले किसी के लिए चीजों को स्पष्ट करना चाहिए। –