একটি সিলযুক্ত বৈশিষ্ট্য কি সিল করা শ্রেণীর মতো?
যতদূর sealed
যায়, হ্যাঁ তারা অবশ্যই trait
এবং এর মধ্যে স্বাভাবিক পার্থক্য ভাগ করে class
।
বা, যদি না হয়, পার্থক্য কি?
তর্ক করা।
কখন সিল করা বৈশিষ্ট ব্যবহার করা ভাল (এবং কখন নয়)?
আপনার যদি একটি থাকে sealed class X
, তবে আপনাকে X
কোনও সাবক্লাসের জন্যও পরীক্ষা করতে হবে । sealed abstract class X
বা একই সত্য হয় না sealed trait X
। সুতরাং আপনি এটি করতে পারেন sealed abstract class X
, তবে সে উপায়টি কেবলমাত্র trait
এবং সামান্য সুবিধার চেয়ে আরও বেশি ভার্বোজ ।
abstract class
ওভার এ ব্যবহারের প্রধান সুবিধা trait
হ'ল এটি প্যারামিটারগুলি গ্রহণ করতে পারে। টাইপ ক্লাস ব্যবহার করার সময় সেই সুবিধাটি বিশেষভাবে প্রাসঙ্গিক। ধরা যাক আপনি একটি সাজানো গাছ তৈরি করতে চান, উদাহরণস্বরূপ। আপনি এটি লিখতে পারেন:
sealed abstract class Tree[T : Ordering]
তবে আপনি এটি করতে পারবেন না:
sealed trait Tree[T : Ordering]
যেহেতু প্রসঙ্গের সীমাগুলি (এবং দেখুন সীমাগুলি) অন্তর্নিহিত পরামিতিগুলির সাথে প্রয়োগ করা হয়। বৈশিষ্ট্যগুলি পরামিতিগুলি গ্রহণ করতে পারে না তা প্রদত্ত, আপনি এটি করতে পারবেন না।
ব্যক্তিগতভাবে, আমি এটি পছন্দ করি sealed trait
এবং ব্যবহার করি যদি না কোনও নির্দিষ্ট কারণ আমাকে এ ব্যবহার করে sealed abstract class
। এবং আমি সূক্ষ্ম কারণে কথা বলছি না, তবে মুখের কারণগুলির কারণে আপনি উপেক্ষা করতে পারবেন না, যেমন টাইপ ক্লাস ব্যবহার করা।