ওভারভিউ
কোটলিনে, "!!" হলো একটি অপারেটর যাকে ডাবল-ব্যাং (double-bang) অপারেটর বলা হয়। এই অপারেটরটিকে "not-null assertion operator" ও বলা হয়। এই অপারেটরটি যেকোনো মানকে নন-নাল (non-null) টাইপের মানে রূপান্তর করতে ব্যবহৃত হয় এবং যদি সংশ্লিষ্ট মান NULL হয় তবে এক্সেপশন থ্রো করে। নিচের উদাহরণে, আমরা দেখব এই ডাবল-ব্যাং অপারেটর কীভাবে ব্যবহার করা হয়।
উদাহরণ ১
এই উদাহরণে, আমরা একটি ভেরিয়েবল "name" বিবেচনা করব এবং একজন প্রোগ্রামার হিসেবে, আমরা চাই যখনই "name"-এর মান NULL হবে তখন একটি NULL পয়েন্টার এক্সেপশন থ্রো করা হোক। এখন নিচের কোড এক্সিকিউট করুন:
fun main(args: Array<String>) {
var name: String?
name = null
println(name)
}
আউটপুট
null
এই কোড আসলে আমাদের রিকোয়ারমেন্ট সমাধান করছে না। আমরা চাইছিলাম যখন "name"-এর মান NULL হবে তখন NULL পয়েন্টার এক্সেপশন থ্রো করা হোক। চলে ডাবল-ব্যাং অপারেটর (!!) ব্যবহার করে আগের উদাহরণটি সংশোধন করি।
উদাহরণ ২
fun main(args: Array<String>) {
var name: String?
name = null
// ওভারলোড অস্পষ্টতা এক্সেপশন সমাধান করার জন্য কিছু ব্যবহার করা হয়নি
println(name!! is Nothing?)
}
আউটপুট
রানটাইমে NULL পয়েন্টার এক্সেপশন থ্রো করবে:
Exception in thread "main" java.lang.NullPointerException
at MainKt.main(main.kt:6)