সংস্করণ ২.১০ দিয়ে শুরু করে, স্কালা এই সমস্যাটি সুনির্দিষ্টভাবে পরিচালনা করার জন্য অন্তর্নিহিত শ্রেণি চালু করেছিল।
এটি একটি প্রদত্ত শ্রেণিতে প্রদত্ত ধরণের উপর একটি অন্তর্নিহিত রূপান্তর সম্পাদন করবে, এতে আপনার নিজস্ব পদ্ধতি এবং মান থাকতে পারে।
আপনার নির্দিষ্ট ক্ষেত্রে, আপনি এই জাতীয় কিছু ব্যবহার করতে চাই:
implicit class RichInt(x: Int) {
def isAFactorOf(y: Int) = x % y == 0
}
2.isAFactorOf(10)
// or, without dot-syntax
2 isAFactorOf 10
নোট করুন যে সংকলিত হওয়ার পরে এটি আমাদের কাঁচা মানটিকে একটি হিসাবে শেষ করবে RichInt(2)
। আপনি আপনার রিচআইন্টের একটি সাবক্লাস হিসাবে ঘোষণা করে এটি ঘিরে ফেলতে পারেন AnyVal
:
implicit class RichInt(val x: Int) extends AnyVal { ... }
এটি বক্সিং করতে পারে না, তবে এটি একটি সাধারণ অন্তর্নিহিত শ্রেণীর চেয়ে বেশি সীমাবদ্ধ। এটা করতে পারেন শুধুমাত্র পদ্ধতি, না মান বা রাষ্ট্র ধারণ করে।