আমার যদি একটি অবনমিত হয় তবে আমি 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? (আমি কোটলিনের সাথে তেমন পরিচিত নই, কেবল কৌতূহলগুলি)