जबकि The Camel Book के नवीनतम संस्करण मैं p522 पर निम्नलिखित कोड टुकड़ा के घेरे में आ गया था पढ़ने:क्या आपको '||' का उपयोग करना चाहिए या कम प्राथमिकता 'या' पर्ल में एक त्रुटि की रिपोर्ट करते समय?
use Fcntl ":flock";
eval {
local $SIG{ALRM} = sub { die "alarm clock restart" };
alarm 10; # schedule alarm in 10 seconds
eval {
flock(FH, LOCK_EX) # a blocking, exclusive lock
|| die "can't flock: $!";
};
alarm 0; # cancel the alarm
};
alarm 0; # race condition protection
die if [email protected] && [email protected] !~ /alarm clock restart/; # reraise
मैं सिखाया गया था कि आप हमेशा कम पूर्वता तार्किक OR ऑपरेटर 'या' तार्किक वरीयता में उपयोग करना चाहिए या ऑपरेटर '||'।
पुस्तक में आगे देखकर, मुझे एक ही तर्क का उपयोग करके कई अन्य उदाहरण दिखाई देते हैं।
क्या नियमों या प्राथमिकता के स्तर बदल गए हैं?
या '||' का संचालन है और 'या' पर्ल के बाद के संस्करणों में बदल गया? (दुर्भाग्यवश, विरासत कोड के कारण हम 5.6.1 एटीएम में वेल्डेड हैं)।
मैं उपयोग करना पसंद करता हूं || तर्क के लिए (उदा। 'if' स्थिति के अंदर) और 'या' नियंत्रण प्रवाह के लिए (जैसे ... या मर)। – rjh
धन्यवाद @ चोरोबा, इसलिए यह एक दिलचस्प मुद्दा उठाता है। निम्न प्राथमिकता तार्किक या पसंद करने के विचार की सर्वव्यापी प्रकृति को देखते हुए, TheCameBook '||' का उपयोग करके चीजों को जटिल क्यों करता है ऑपरेटर जो केवल परिस्थिति में काम करेगा जहां कोष्ठक का उपयोग किया जाता है? दिलचस्प। लगता है कि यह TMTOWTDI है! (: –
मुझे लगता है कि अगर कोई ऊंट बुक के माध्यम से जाता है और एक पूर्ण कोड क्लीनअप करता है, तो वह उदाहरण 'या' में बदल जाएगा। –