कई भाषाओं में, आप) सच है, तो बार()क्या क्लोजर में शॉर्ट सर्किट तर्क है?
if (foo() || bar() || foobar()) { /* do stuff */ }
और foo (की तर्ज पर कुछ वापस आती है और foobar() का मूल्यांकन नहीं किया जाएगा बारे में है।
मान लीजिए मैं निम्नलिखित Clojure कोड था: सही करने के लिए एक मूल्यांकन करता है, ख और भी मूल्यांकन किया जा c, या वे अनदेखा कर दिया जाएगा
(let [a (simple-function args)
b (complex-function args)
c (too-lazy-to-optimize-this-function args)]
(or a b c))
?
धन्यवाद!
मैं इस एक को स्वीकार कर रहा हूँ, क्योंकि यह पकड़ लिया है कि मैं अनजान था चर्चा करता है। – Joel
यह गॉचा नहीं है, बल्कि आपको समझना होगा कि सब कुछ आलसी अनुक्रमों को छोड़कर और उन कार्यों पर काम करने के लिए उत्सुक है। 'या' शॉर्ट-सर्किट्स मैक्रो के बाद से, यह http://bit.ly/u8xnms तक फैलता है। यदि यह एक समारोह था, तो यह इसके तर्कों का मूल्यांकन करेगा। इसके बजाए, यह एक मैक के लिए macroexpands, जो एक विशेष रूप और शॉर्ट सर्किट है। – gtrak