मुझे हाल ही में पता चला है कि जावा (और स्कैला) में गैर-शॉर्ट सर्किटिंग लॉजिकल ऑपरेटर &
, |
, और ^
शामिल हैं। मैंने पहले सोचा था कि ये केवल बिटवाई ऑपरेटरों के रूप में काम करते थे। जबकि शायद ^
के लिए कोई तर्क है, मैं गैर-शॉर्ट-सर्किटिंग लॉजिकल ऑपरेटरों का उपयोग करने के बहुत अच्छे कारणों के बारे में नहीं सोच सकता - हालांकि, मैं एक उदाहरण का विरोध कर सकता हूं।क्या जावा/स्कैला में गैर-शॉर्ट-सर्किटिंग लॉजिकल (बूलियन) ऑपरेटर के लिए अच्छे उपयोग हैं?
क्या ये ऑपरेटर उपयोगी हैं? वे हार्ड-टू-कैच बग का कारण बनने की अधिक संभावना रखते हैं।
scala> def foo = {
| println("foo")
| true
| }
foo: Boolean
scala> def bar = {
| println("bar")
| true
| }
bar: Boolean
scala> foo || bar
foo
res5: Boolean = true
scala> foo | bar
foo
bar
res6: Boolean = true
नहीं, बिटवाई ऑपरेटरों का केवल बिटवाई ऑपरेशंस के लिए उपयोग किया जाना चाहिए, IMHO :) –
इस प्रश्न का एकमात्र संभावित उत्तर "गैर-शॉर्ट-सर्किटिंग ऑपरेटर उपयोगी हैं जब आप शॉर्ट सर्किट नहीं चाहते हैं"। तो असली सवाल यह है कि "आप शॉर्ट सर्किटिंग कब नहीं चाहते हैं"? –