क्योंकि असाइनमेंट का "परिणाम" मान असाइन किया गया है ... इसलिए यह अभी भी boolean
अभिव्यक्ति दूसरे मामले में है। if
अभिव्यक्तियों की स्थिति boolean
अभिव्यक्ति होने की आवश्यकता है, जो कि दूसरे से संतुष्ट है लेकिन पहले नहीं। प्रभावी ढंग से, अपने दो स्निपेट हैं:
int a;
a = 1;
if (a) { }
और
boolean b;
b = true;
if (b) { }
यह है कि विस्तार से स्पष्ट है कि दूसरे संस्करण संकलन होगा पहला है लेकिन नहीं?
यह एक कारण है कि सही और गलत से तुलना न करें। इसलिए मैं के बजाय if (b)
और if (b == false)
के बजाय if (!b)
लिखता हूं। b
और c
boolean
चर हैं, भले ही एक टाइपो कोई समस्या पैदा कर सके, आपको अभी भी if (b == c
के साथ समस्याएं आती हैं) मैं नहीं कह सकता कि यह मेरे साथ कभी हुआ है।
संपादित करें: अपना संपादन के जवाब -, और while
छोरों आदि इतने लंबे समय के रूप में कुल मिलाकर हालत अभिव्यक्ति boolean
है - सभी प्रकार के कार्य if
बयान में इस्तेमाल किया जा सकता है। उदाहरण के लिए, आप हो सकता है:
String line;
while ((line = reader.readLine()) != null)
{
// Do something with a line
}
जब मैं आमतौर पर परिस्थितियों में से बचने के दुष्प्रभाव, इस विशेष मुहावरा अक्सर ऊपर दिखाए गए उदाहरण के लिए, या InputStream.read
प्रयोग करने के लिए उपयोगी है। असल में यह है "जबकि मैंने जो मूल्य पढ़ा है वह उपयोगी है, इसका इस्तेमाल करें।"
स्रोत
2010-03-06 20:20:34
यह एक बुरा विचार में लगातार पहले डालने की आदत में पाने के लिए नहीं है अपने बयान करता है, तो .... यही कारण है: अगर (सच == ख) {} और अगर (1 == एक) { } यह आदत गारंटी देता है कि यदि आप लिखते हैं = == के बजाय संकलक आपको स्मैक करेगा। –
@ ओली: राय उस पर व्यापक रूप से भिन्न होती है। जहां तक पठनीयता का सवाल है, यह * एक बुरा विचार है। इसके अलावा, यह जावा जैसी भाषाओं में कोई लाभ नहीं देता है क्योंकि यहां कोई भ्रम उत्पन्न नहीं हो सकता है। मेरा मतलब है, कोई भी कभी भी एक परीक्षण लिखता है जैसे 'अगर (ए == सच)', है ना? –
@ कोनराड। आप जावा में सही हैं, लेकिन इस सी के लिए रीट्रेड जो PERL और कुछ अन्य भाषाओं में काम करता है, उसने मुझे कई बार बचाया है। –