কম্পিউটার

কোটলিন - অলস বনাম লেটিনিট ব্যবহার করে সম্পত্তির সূচনা


কোটলিন লাইব্রেরি সম্পত্তি ঘোষণার জন্য দুটি ভিন্ন অ্যাক্সেস মডিফায়ার সরবরাহ করে।

এই নিবন্ধে, আমরা এই দুটি অ্যাক্সেসমডিফায়ারের মধ্যে পার্থক্য এবং কীভাবে আমরা আমাদের অ্যাপ্লিকেশনে সেগুলি ব্যবহার করতে পারি তা তুলে ধরব৷

Lateinit

একটি "lateInit" ভেরিয়েবল তৈরি করার জন্য, আমাদের শুধুমাত্র সেই ভেরিয়েবলের অ্যাক্সেস মডিফায়ার হিসেবে "lateInit" কীওয়ার্ড যোগ করতে হবে। কোটলিনে "lateInit" ব্যবহার করার জন্য নিম্নলিখিত শর্তগুলির একটি সেট রয়েছে যা অনুসরণ করতে হবে৷

  • একটি পরিবর্তনযোগ্য ভেরিয়েবলের সাথে "lateInit" ব্যবহার করুন। তার মানে, আমাদের "lateInit" এর সাথে "var" কীওয়ার্ড ব্যবহার করতে হবে।

  • "lateInit" শুধুমাত্র অ-শূন্যযোগ্য ডেটা প্রকারের সাথে অনুমোদিত৷

  • "lateInit" আদিম ডেটা প্রকারের সাথে কাজ করে না৷

  • "lateInit" ব্যবহার করা যেতে পারে যখন পরিবর্তনশীল প্রপার্টির কোনো গেটার না থাকে এবং সেটার পদ্ধতি।

উদাহরণ

আমরা একটি ভেরিয়েবলকে lateInit হিসাবে ঘোষণা করব এবং আমরা দেখব কিভাবে আমরা পুরো প্রোগ্রাম জুড়ে এটি অ্যাক্সেস করতে পারি।

class Tutorial {

   lateinit var name : String

   fun checkLateInit(){
      // checking whether the value is assigned or not
      if(this::name.isInitialized)
         println("Your value is not assigned");

      else{
         // initializing name
         name = "www.tutorialspoint.com/"
         println(this.name)
         // this will return true
      }
   }
}

fun main() {
   var obj=Tutorial();
   obj.checkLateInit();
}

আউটপুট

একবার আপনি কোডটি কার্যকর করলে, এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
www.tutorialspoint.com/

অলস সূচনা

দক্ষ মেমরি পরিচালনার জন্য, কোটলিন একটি নতুন বৈশিষ্ট্য চালু করেছে যার নাম অলস প্রাথমিককরণ। যখন অলস কীওয়ার্ড ব্যবহার করা হয়, কল করলেই অবজেক্ট তৈরি হবে, না হলে অবজেক্ট তৈরি হবে না। অলস() একটি ফাংশন যা একটি ল্যাম্বডা নেয় এবং অলস এর একটি উদাহরণ প্রদান করে যা অলস সম্পত্তির প্রতিনিধি হিসাবে কাজ করতে পারে যার উপর এটি প্রয়োগ করা হয়েছে। এটি অবজেক্টের অপ্রয়োজনীয় প্রারম্ভিকতা রোধ করার জন্য ডিজাইন করা হয়েছে।

  • অলস শুধুমাত্র অ-শূন্য ভেরিয়েবলের সাথে ব্যবহার করা যেতে পারে।

  • পরিবর্তনশীল শুধুমাত্র val হতে পারে। "var" অনুমোদিত নয়।

  • অবজেক্ট শুধুমাত্র একবার শুরু করা হবে। তারপরে, আপনি ক্যাশে মেমরি থেকে মান পাবেন।

  • অবজেক্টটি অ্যাপ্লিকেশানে ব্যবহার না করা পর্যন্ত আরম্ভ করা হবে না৷

উদাহরণ

এই উদাহরণে, আমরা একটি অলস ভেরিয়েবল "myName" ঘোষণা করব এবং আমরা দেখতে পাচ্ছি যে কোডের এই অংশগুলিতে কল শুধুমাত্র একবার হবে এবং যখন মানটি শুরু হবে, তখন এটি পুরো অ্যাপ্লিকেশন জুড়ে মানটি মনে রাখবে। একবার অলস প্রারম্ভিকতা ব্যবহার করে মানটি বরাদ্দ করা হলে, এটি পুনরায় বরাদ্দ করা যাবে না।

class Demo {
   val myName: String by lazy {
      println("Welcome to Lazy declaration");
      "www.tutorialspoint.com"
   }
}

fun main() {
   var obj=Demo();
   println(obj.myName);
   println("Second time call to the same object--"+obj.myName);
}

আউটপুট

একবার আপনি কোডটি কার্যকর করলে, এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Welcome to Lazy declaration
www.tutorialspoint.com
Second time call to the same object--www.tutorialspoint.com

  1. কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে কাস্টম প্রগ্রেস বার।

  2. কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে গ্রিডভিউ স্ক্রোলিং কীভাবে অক্ষম করবেন?

  3. CSS z-index সম্পত্তি ব্যবহার করে

  4. CSS ব্যবহার করে প্রপার্টি প্রদর্শন করুন