ওভারভিউ
যে কোনো ভেরিয়েবল যা ঘোষণার পরে আরম্ভ করা হয় তাকে "late initialized variable" বলা হয়। truyền thốngীয় প্রোগ্রামিং ভাষায়, যেকোনো নন-নাল টাইপের ভেরিয়েবল কনস্ট্রাক্টরে আরম্ভ করা উচিত। কিন্তু কখনো কখনো ভুলবশত ডেভেলপাররা এই নাল চেকগুলো বুলে যান যা প্রোগ্রামিং ত্রুটি সৃষ্টি করে। এই পরিস্থিতি এড়াতে কোটলিনে "lateInit" নামক একটি নতুন মডিফায়ার প্রবর্তন করা হয়েছে। এই মডিফায়ারের পাশাপাশি, কোটলিন এই ভেরিয়েবল আরম্ভ করা হয়েছে কিনা তা যাচাই করার জন্য কিছু মেথড প্রদান করে।
"lateInit" ভেরিয়েবল তৈরি করতে, আমাদের শুধু সেই ভেরিয়েবলের অ্যাক্সেস মডিফায়ার হিসেবে "lateInit" কীওয়ার্ডটি যোগ করতে হবে। কোটলিনে "lateInit" ব্যবহার করার জন্য নিচের শর্তাবলী মেনে চলতে হবে:
পরিবর্তনশীল (mutable) ভেরিয়েবলের সাথে "lateInit" ব্যবহার করুন। অর্থাৎ, "var" কীওয়ার্ড "lateInit" এর সাথে ব্যবহার করতে হবে।
"lateInit" শুধুমাত্র নন-নাল (non-nullable) ডেটা টাইপের সাথে অনুমোদিত।
"lateInit" প্রাইমিটিভ ডেটা টাইপের সাথে কাজ করে না।
"lateInit" তখন ব্যবহার করা যেতে পারে যখন ভেরিয়েবল প্রপার্টির কোনো getter এবং setter মেথড না থাকে।
উদাহরণ
এই উদাহরণে, আমরা একটি ভেরিয়েবল "lateInit" হিসেবে ঘোষণা করব এবং কোটলিন লাইব্রেরি ফাংশন ব্যবহার করে ভেরিয়েবলটি আরম্ভ করা হয়েছে কিনা তা যাচাই করব।
class Tutorial {
lateinit var name: String
fun checkLateInit() {
println(this::name.isInitialized)
// এটি false প্রিন্ট করবে কারণ মান আরম্ভ করা হয়নি
// name আরম্ভ করা
name = "www.tutorialspoint.com/"
println(this::name.isInitialized) // এটি true ফেরত দেবে
}
}
fun main() {
var obj = Tutorial()
obj.checkLateInit()
}
আউটপুট
false true
দ্বিতীয় কেসে, ভেরিয়েবল name আরম্ভ করা হয়েছে, সেজন্য এটি True ফেরত দেয়।