অন্তর্ভুক্ত করা
আপনি যখন include
আপনার ক্লাসে কোনও মডিউল রেখেছেন, এমনভাবে যেন আপনি মডিউলটির মধ্যে সংজ্ঞায়িত কোডটি নিয়ে থাকেন এবং ক্লাসের মধ্যে সন্নিবেশ করান, যেখানে আপনি এটি 'অন্তর্ভুক্ত' করেন। এটি 'মিক্সিন' আচরণের অনুমতি দেয়। এটি আপনার কোডটি অনুলিপি এড়ানোর জন্য ব্যবহার করে, উদাহরণস্বরূপ, যদি একাধিক ক্লাস থাকে তবে মডিউলে একই কোডের প্রয়োজন হত।
module Log
def class_type
"This class is of type: #{self.class}"
end
end
class TestClass
include Log
# ...
end
tc = TestClass.new.class_type # -> success
tc = TestClass.class_type # -> error
দরকার
প্রয়োজনীয় পদ্ধতি আপনাকে একটি লাইব্রেরি লোড করতে দেয় এবং এটিকে একবারের বেশি লোড হতে বাধা দেয়। আপনি প্রথমবারের পরে একই লাইব্রেরিটি লোড করার চেষ্টা করলে প্রয়োজনীয় পদ্ধতিটি 'মিথ্যা' ফিরে আসবে। প্রয়োজনীয় পদ্ধতিটি কেবল তখনই ব্যবহার করা প্রয়োজন যদি আপনি লোড করা লাইব্রেরি একটি পৃথক ফাইলে সংজ্ঞায়িত করা হয়, যা সাধারণত ক্ষেত্রে হয়।
সুতরাং এটি লাইব্রেরিটি ইতিমধ্যে লোড হয়েছিল কিনা তা ট্র্যাক করে রাখে। আপনার লাইব্রেরির ফাইলের নামের ".rb" এক্সটেনশন নির্দিষ্ট করার দরকার নেই। প্রয়োজনীয় ব্যবহার কীভাবে করা যায় তার একটি উদাহরণ এখানে। আপনার ".rb" ফাইলের একেবারে শীর্ষে প্রয়োজনীয় পদ্ধতিটি রাখুন:
বোঝা
লোড পদ্ধতিটি প্রায় প্রয়োজনীয় পদ্ধতির মতো এটি বাদ দিয়ে এটি যে লাইব্রেরিটি লোড হয়েছে কিনা তা ট্র্যাক করে না। সুতরাং একাধিকবার একটি লাইব্রেরি লোড করা সম্ভব এবং লোড পদ্ধতিটি ব্যবহার করার সময় আপনাকে অবশ্যই লাইব্রেরির ফাইলের নামের ".rb" এক্সটেনশনটি নির্দিষ্ট করতে হবে।
প্রসারিত করা
অন্তর্ভুক্তের পরিবর্তে প্রসারিত পদ্ধতিটি ব্যবহার করার সময়, আপনি মডিউলটির পদ্ধতিগুলি উদাহরণ পদ্ধতিগুলির পরিবর্তে ক্লাস পদ্ধতি হিসাবে যুক্ত করছেন।
module Log
def class_type
"This class is of type: #{self.class}"
end
end
class TestClass
extend Log
# ...
end
tc = TestClass.class_type
require
এবংinclude
,, এবং এছাড়াও প্রাসঙ্গিকModule#append_features
।