इस प्रकार की स्थिति के लिए डार्ट 1.12 अशक्त संचालक उपलब्ध हैं:
bool isConnected(a, b) {
bool outConn = outgoing[a]?.contains(b) ?? false;
bool inConn = incoming[a]?.contains(b) ?? false;
return outConn || inConn;
}
?.अशक्त करने के लिए ऑपरेटर शॉर्ट सर्किट अगर बाएं ओर रिक्त है, और ??ऑपरेटर बाएं ओर वापस लौट आता है यह शून्य नहीं है, और दाएँ हाथ की ओर अन्यथा।
बयान
outgoing[a]?.contains(b)
इस प्रकार या तो nullअगर outgoing[a]यह है null, या नहीं है , तो बूलियन परिणाम का मूल्यांकन करेगा contains(b)।
इसका मतलब है कि परिणामी बयान निम्नलिखित में से एक होगा:
bool outConn = null ?? false;
bool outConn = false ?? false;
bool outConn = true ?? false;
वही inConnबूलियन पर लागू होता है , जिसका अर्थ दोनों है inConnऔर outConnगैर-अशक्त होने की गारंटी है, जिससे हम ||दोनों के परिणाम को वापस कर सकते हैं ।
outgoing[a]?.contains(b)खतरनाक है, कम से कम ग्रूवी शब्दार्थ के साथ, क्योंकि जबoutgoingहोता हैnull, संपूर्ण अभिव्यक्ति का मूल्यांकन करता हैnull। तो आप वास्तव में कुछ पाने की तरह हो सकता हैreturn (null || true), जो जाँच मोड में फेंक देंगे।