private val repositories = mutableListOf<String>()
private val repositories = ArrayList<String>()
উভয়ই পরিবর্তনীয় তালিকা, তবে দুটি কীওয়ার্ডের বিন্দু কী mutableListOfবা ArrayList?
বা কোন বড় পার্থক্য আছে?
উত্তর:
দুজনের মধ্যে কেবলমাত্র তফাতটি আপনার অভিপ্রায়টি যোগাযোগ করা।
আপনি যখন লিখবেন val a = mutableListOf(), আপনি বলছেন "আমি একটি পরিবর্তনীয় তালিকা চাই, এবং আমি বিশেষত প্রয়োগের বিষয়ে যত্ন করি না"। পরিবর্তে আপনি যখন লেখেন, val a = ArrayList()আপনি বলছেন "আমি বিশেষত একটি চাই ArrayList"।
বাস্তবে, জেভিএমকে সংকলিত কোটলিনের বর্তমান বাস্তবায়নে কলিং mutableListOfএকটি উত্পন্ন করবে ArrayList, এবং আচরণের মধ্যে কোনও পার্থক্য নেই: একবার তালিকা তৈরি হয়ে গেলে, সমস্ত কিছু একই রকম আচরণ করবে।
এখন, আসুন আমরা বলি যে কোটলিনের ভবিষ্যতের সংস্করণটি mutableListOfবিভিন্ন ধরণের তালিকায় ফিরে আসে।
না এর চেয়ে পছন্দসই, কোটলিন টিম কেবল তখনই সেই পরিবর্তন করতে পারে যখন তারা দেখায় যে নতুন বাস্তবায়ন বেশিরভাগ ব্যবহারের ক্ষেত্রে আরও ভাল কাজ করে। mutableListOfতাহলে আপনি কী সেই নতুন তালিকার প্রয়োগটি স্বচ্ছভাবে ব্যবহার করতে পারবেন এবং আপনি নিখরচায় আরও ভাল আচরণটি পেতে পারেন? mutableListOfযদি আপনার কেসের মতো মনে হয় তবে সাথে যান ।
অন্যদিকে, সম্ভবত আপনি আপনার সমস্যা সম্পর্কে চিন্তাভাবনা করে বেশ কিছুটা সময় ব্যয় করেছেন এবং বুঝতে পেরেছেন যে এটি আপনার সমস্যার জন্য ArrayList সত্যিই সেরা উপযুক্ত এবং আপনি কোনও উপ-অনুকূল কিছুতে যাওয়ার ঝুঁকি নিতে চান না। তারপরে আপনি সম্ভবত ArrayListসরাসরি ব্যবহার করতে চান বা arrayListOfকারখানার ফাংশনটি ব্যবহার করতে চান (একটি নির্দিষ্ট ArrayListএনালগ mutableListOf) ue
mutableListOf<T>()একটি ইনলাইন ফাংশন প্রার্থনা যা প্রত্যাবর্তন করে
MutableList<T>। আজকের হিসাবে, mutableListOfএকটি উদাহরণ ফিরে আসে ArrayList।
ArrayList<String>() এটি একটি নির্মাণকারীর প্রার্থনা এবং ইনলাইন করা যায় না।
অন্য কথায়, প্রদত্ত:
val a = mutableListOf<String>()
val b = ArrayList<String>()
a টাইপ হয় MutableList<String>b টাইপ হয় ArrayList<String>রানটাইম এ, উভয় aএবং এর bউদাহরণ রাখে ArrayList।
লক্ষ্য করুন ইনলাইনিং যখন সঙ্গে মিলিত বিশেষ করে দরকারী টাইপ reification , যার অস্তিত্ব যথার্থ listOf, mutableListOfকথা বলা ইত্যাদি।
aএবং bআলাদাভাবে ঘোষিত প্রকার রয়েছে - তাই সংকলনের সময় একটি পার্থক্য রয়েছে।
val b = arrayListOf<String>()
আপনি সূত্রে দেখতে পারেন :
public inline fun <T> mutableListOf(): MutableList<T> = ArrayList()
সুতরাং, কোনও পার্থক্য নেই, কেবল একটি সুবিধা পদ্ধতি।
mutableListOfনয়ArrayListকিওয়ার্ডগুলিও রয়েছে