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
কিওয়ার্ডগুলিও রয়েছে