कुछ भाषाओं में, आप बाएं से दाएं जब तक यह एक सही मूल्य पाता है या शॉर्ट सर्किट, केवल मूल्यों का मूल्यांकन होगाक्या कोई शॉर्ट सर्किट है या PHP में जो बाएं-सबसे अधिक मूल्य देता है?
$a = $b OR $c OR die("no value");
है, कर सकते हैं। लेकिन इसके अलावा, यह वास्तविक मान का मूल्यांकन करता है जिसका मूल्यांकन किया गया था, केवल true
के विपरीत।
उपरोक्त उदाहरण में, PHP में, $a
मूल्य 1
यदि या तो $a
या $b
गैर झूठी मान हैं हो जाएगा, या यह die
होगा।
तो लिखा एक समारोह first
,
$a = first($a, $b, die("no value"));
जो मूल्य या तो $a
या $b
की रिटर्न के रूप में प्रयोग की जाने वाली। लेकिन, यह शॉर्ट-सर्किट नहीं है - यह हमेशा die
होगा।
क्या PHP में शॉर्ट-सर्किट OR
है जो वास्तविक मान देता है?
संपादित करें: उदाहरण मैं दे दी है के लिए कुछ अच्छी जवाब है, लेकिन मुझे लगता है कि मेरी उदाहरण वास्तव में मैं क्या मतलब नहीं है। मुझे स्पष्टीकरण दें।
$a = func1() OR func2() OR func3();
कहाँ उन कार्यों में से प्रत्येक एक वास्तव में बहुत तीव्र गणना करता है, तो मैं केवल ज्यादा से ज्यादा एक बार प्रत्येक अभिव्यक्ति का मूल्यांकन करना चाहते। और पहले एक वास्तविक मूल्य वापस करने के लिए, मैं चाहता हूं कि वास्तविक मान $a
में संग्रहीत किया जाए।
मुझे लगता है कि हम एक समारोह लिखने से इंकार कर सकते हैं, क्योंकि यह शॉर्ट-सर्किट नहीं होगा। और सशर्त ऑपरेटर उत्तर प्रत्येक अभिव्यक्ति का दो बार मूल्यांकन करेगा।
यह निश्चित रूप से हमेशा मर जाएगा। जब आप कोई फ़ंक्शन कॉल करते हैं, तो PHP को पहले सभी पैरामीटर का मूल्यांकन करना होगा। मूल्यांकन के दौरान, यह 'मर जाता है ("कोई मूल्य नहीं") देखता है और बस यही करता है। – Tom
जब हम चर के बारे में बात कर रहे थे तो प्रत्येक अभिव्यक्ति का मूल्यांकन दो बार ठीक था। आपको पहली बार अपने प्रश्न का जादू करना होगा, और अतिरिक्त जानकारी पेश करने के बाद उत्तर की आलोचना नहीं करना चाहिए जो पहली बार उपलब्ध नहीं था। यदि आप कार्यों का मतलब है, तो पहली बार कार्यों का उपयोग करें। सबसे अच्छा जवाब अब अराजकता है "नंबर" –
टिप्पणी # 2 गलत है। PHP में शॉर्ट-सर्किट मूल्यांकन होता है लेकिन AFAIK बाएं सबसे अधिक vale वापस नहीं करता है। यह हमेशा एक बूलियन देता है। – apinstein