রুবিতে সুপার কীওয়ার্ডটি কী করে?
এটি প্যারেন্ট ক্লাসে একটি পদ্ধতিকে কল করে যেটি super
কে কল করে .
উদাহরণস্বরূপ :
যদি আপনি i_like_chocolate
নামে একটি পদ্ধতি কল করেন , এবং তারপর আপনি super
কল করুন সেই পদ্ধতির মধ্যে, রুবি এই পদ্ধতির মালিকদের অভিভাবক শ্রেণিতে একই নামের আরেকটি পদ্ধতি খুঁজে বের করার চেষ্টা করবে।
এটি নিয়মিত পদ্ধতি কলের মতো ক্লাস অ্যানস্ট্রি চেইনের মাধ্যমে বুদবুদ হতে থাকে .
যদি পদ্ধতিটি বিদ্যমান না থাকে তবে এটি একটি NoMethodError
ট্রিগার করবে ব্যতিক্রম, এবং যদি একটি method_missing
পাওয়া যায় এটি ব্যবহার করবে।
এখন :
আসুন কিছু কোডের উদাহরণ দেখি!
আর্গুমেন্ট ছাড়া সুপার
নিম্নলিখিত উদাহরণে আমাদের একটি Cat
আছে Animal
থেকে উত্তরাধিকারসূত্রে পাওয়া শ্রেণী .
Cat
ক্লাসের একটি name
আছে পদ্ধতি যা super
ব্যবহার করে একই পদ্ধতিকে এর প্যারেন্ট ক্লাসে কল করতে (Animal
)।
এখানে কোড:
class Animal def name puts "Animal" end end class Cat < Animal def name super end end cat = Cat.new cat.name # "Animal"
রুবি সুপার কীওয়ার্ড আর্গুমেন্ট সহ বা ছাড়া ব্যবহার করার সময় ভিন্নভাবে আচরণ করে .
যুক্তি ছাড়া:
এটি নতুনটিতে মূল পদ্ধতি কলের জন্য ব্যবহৃত আর্গুমেন্টগুলি বরাবর পাস করবে , কীওয়ার্ড আর্গুমেন্ট সহ এবং দেওয়া থাকলে একটি ব্লক।
এখানে একটি উদাহরণ :
def puts(*) super end puts 1, 2, 3
এই পদ্ধতি, যেকোন শ্রেণীর বাইরে সংজ্ঞায়িত, Object
এর অন্তর্গত . এর মানে মূল puts
এর আগে এটিকে কল করা হবে পদ্ধতি।
এখন:
যখন আপনি puts
কল করেন আপনি আমাদের তৈরি করা এই নতুন পদ্ধতিটিকে কল করছেন যা পরে super
ব্যবহার করে আসল puts
কল করতে .
সুপার বনাম সুপার() কখন ব্যবহার করবেন
আমরা শুধু দেখেছি কিভাবে super
ব্যবহার করতে হয় অভিভাবক পদ্ধতিতে কল করার জন্য।
কিন্তু কি হবে যদি অভিভাবক পদ্ধতি একই সংখ্যক আর্গুমেন্ট না নেয়?
সেক্ষেত্রে আপনি ব্যবহার করতে পারেন:
super()
কোন যুক্তির জন্যsuper(arg1, arg2, ...)
আপনি কোন আর্গুমেন্ট পাস করতে চান তা বেছে নিতে
উদাহরণ :
def puts super() endরাখে
লক্ষ্য করুন কিভাবে এখানে বন্ধনীর বিশেষ অর্থ আছে , একটি নিয়মিত পদ্ধতি কল থেকে ভিন্ন।
super
সম্পর্কে জানার আরও কিছু জিনিস :
- এটি শুধুমাত্র একটি পদ্ধতিতে ব্যবহার করা যেতে পারে
- এটি মূল পদ্ধতিতে কল করার ফলাফল প্রদান করে
- এটি একাধিকবার বলা যেতে পারে
বোল্ড লাইন (super
ফলাফল প্রদান করে) super
-এর কিছু ব্যবহার বোঝার চাবিকাঠি যে আপনি বন্য মধ্যে খুঁজে পেতে পারেন.
আপনি super
ব্যবহার করতে পারেন ডেকোরেটর প্যাটার্ন বাস্তবায়ন করতে, অথবা যদি আপনি এটিকে initialize
এর ভিতরে কল করেন পদ্ধতিটি প্যারেন্ট ক্লাসে ইনস্ট্যান্স ভেরিয়েবল শুরু করতে ব্যবহার করা যেতে পারে।
সারাংশ
আপনি রুবি সুপার কীওয়ার্ড সম্পর্কে শিখেছেন , এটা কি এবং কিভাবে এটা বিভিন্ন পরিস্থিতিতে কাজ করে!
আপনি যদি এই নিবন্ধটি উপভোগ করেন তবে আপনি এই ধরনের আরও সামগ্রী এবং শুধুমাত্র গ্রাহকদের জন্য উপলব্ধ অন্যান্য দরকারী রুবি টিপস পেতে RubyGuides নিউজলেটারে সদস্যতা নিতে চাইতে পারেন৷