यदि मेरे पास एक अशक्त है Boolean b, तो मैं जावा में निम्नलिखित तुलना कर सकता हूं:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
कोटलिन में, मैं !!ऑपरेटर का उपयोग करके उसी को प्राप्त कर सकता हूं :
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
हालांकि, !!अशक्त सुरक्षा प्रणाली को दरकिनार करते हुए, मेरे लिए थोड़ा सा स्केच का उपयोग महसूस होता है।
क्या इसके लिए अधिक सुरुचिपूर्ण दृष्टिकोण है?
संपादित करें ऐसा लगता है कि मैंने थोड़ा ओवरसाइम्पल किया है। स्थानीय चर के लिए, जैसा कि बंथर दिखाता है, यह काम करता है। हालांकि, मेरा बूलियन bवास्तव में एक "बैकिंग क्षेत्र के साथ संपत्ति" है (मैं वास्तव में अभी तक गति करने के लिए नहीं हूं कि यह क्या लगाता है)। यह परिणाम है:
bहो सकती है nullऔर अशक्त सुरक्षा है , जो अशक्त संदर्भों का मूल्यांकन करने की कोशिश करते समय संकलन त्रुटियों को देता है। इस प्रकार, सादे का उपयोग bसंकलन त्रुटि देता है :)
b != nilसही पक्ष की जाँच करने से पहले उसे नहीं पकड़ेंगे?
val r = b?doSomething() ?: doSomethingElse()काम करना चाहिए।

!!bऔर बस नहींb? (मैं कोटलिन, बस क्यूरियोस से परिचित नहीं हूं)