রুবিতে সুপার কীওয়ার্ডটি কী করে?
এটি প্যারেন্ট ক্লাসে একটি পদ্ধতিকে কল করে যেটি 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 নিউজলেটারে সদস্যতা নিতে চাইতে পারেন৷