2016-06-30 3 views
5

मान लीजिए f() और g() वापसी Option<T>अगर एक जोड़ी शॉर्ट-सर्किट के साथ चलो?

if let (Some(x), Some(y)) = (f(), g()) { 
    h(); 
} 

f() तो रिटर्न None, g() मूल्यांकन किया जाएगा? मूल्यांकन द्वारा मूल्यांकन या प्रतिबंधित किया गया मूल्यांकन है?

उत्तर

7

यह शॉर्टकट नहीं है। जोड़ी के खिलाफ पैटर्न-मिलान करने के लिए, जोड़ी पूरी तरह से बनाई जानी चाहिए, जिसका अर्थ है कि f और g दोनों को बुलाया गया है। कोई आलसी मूल्यांकन नहीं है जहां मूल्यों की गणना करने से पहले पैटर्न मिलान हो सकता है।

(वैसे, यह आसान आज़माने के लिए है, और जंग संकलक काफी कल्पना अभी है।)

संबंधित मुद्दे