यदि मेरे पास एक अशक्त है 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
? (मैं कोटलिन, बस क्यूरियोस से परिचित नहीं हूं)