আমি আসলে এই সঠিক প্রশ্নটি 30 মিনিট আগে পেয়েছিলাম, তাই আমি চারপাশে খনন শুরু করেছি এবং এর কোনও সমাধান বা কোনও সমাধান খুঁজে পেলাম না, তবে অনুসন্ধানের সময় আমি কোটলিংং ওয়েবসাইটটিতে এই বিভাগটি পেয়েছি যা জানিয়েছে যে:
নোট করুন যে এক্সটেনশনগুলি একটি নালযোগ্য রিসিভার প্রকারের সাথে সংজ্ঞায়িত করা যেতে পারে। এই জাতীয় এক্সটেনশনগুলিকে কোনও অবজেক্ট ভেরিয়েবলের উপর কল করা যেতে পারে এমনকি যদি এর মানটি শূন্য থাকে।
সুতরাং তখন আমার কাছে ক্রেজিস্ট ধারণাটি ছিল, কেন কোনও নল রিসিভার (আসলে সেই রিসিভারটি ব্যবহার না করে) দিয়ে একটি এক্সটেনশন ফাংশন সংজ্ঞায়িত করা হবে না এবং তারপরে একে নাল বস্তুতে কল করুন! সুতরাং আমি এটি চেষ্টা করেছিলাম, এবং এটি বেশ ভাল কাজ করেছে, তবে এটি দেখতে খুব কুরুচিপূর্ণ ছিল। এটি এমন ছিল:
(null as Type?).staticFunction(param1, param2)
সুতরাং আমি যে রিসিভার টাইপটির আমার এক্সটেনশন ফাইলে একটি ভাল তৈরি করে নালকের মান রেখেছিলাম এবং তারপরে এটি আমার অন্যান্য শ্রেণিতে ব্যবহার করব। সুতরাং, উদাহরণ হিসাবে, এখানে আমি কীভাবে Navigation
অ্যান্ড্রয়েডে ক্লাসের জন্য "স্থিতিশীল" এক্সটেনশন ফাংশনটি প্রয়োগ করেছি : আমার নেভিগেশন এক্সটেনশনস.কেটি ফাইলে:
val SNavigation: Navigation? = null
fun Navigation?.createNavigateOnClickListener(@IdRes resId: Int, args: Bundle? = null, navOptions: NavOptions? = null,
navigationExtras: Navigator.Extras? = null) : (View) -> Unit {
//This is just implementation details, don't worry too much about them, just focus on the Navigation? part in the method declaration
return { view: View -> view.navigate(resId, args, navOptions, navigationExtras) }
}
কোডটি এটি ব্যবহার করে:
SNavigation.createNavigateOnClickListener(R.id.action_gameWonFragment_to_gameFragment)
স্পষ্টতই, এটি কোনও শ্রেণীর নাম নয়, এটি কেবল শ্রেণীর ধরণের একটি পরিবর্তনশীল যার নাল মান রয়েছে। এটি স্পষ্টতই এক্সটেনশন প্রস্তুতকারকের দিকে (কারণ তাদের পরিবর্তনশীল তৈরি করতে হবে) এবং বিকাশকারী পক্ষের দিকে (কারণ তাদের SType
প্রকৃত শ্রেণির নামের পরিবর্তে ফর্ম্যাটটি ব্যবহার করতে হবে), তবে এটি এখনই অর্জন করা সবচেয়ে নিকটতম প্রকৃত স্থির ফাংশনগুলির সাথে তুলনা করুন। আশা করি, কোটলিন ভাষা নির্মাতারা তৈরি করা ইস্যুতে প্রতিক্রিয়া জানাবে এবং ভাষায় সেই বৈশিষ্ট্য যুক্ত করবে।