কম্পিউটার টিউটোরিয়াল

রুবিতে কাস্টম to_s এবং Inspect মেথড দিয়ে সেলফ-ডেসক্রাইবিং অবজেক্ট ডিফাইন করুন

এই আর্টিকেলে আপনি শিখবেন রুবি inspect মেথড কীভাবে কাজ করে এবং কেন আমরা এটি ব্যবহার করি।

যখন আপনি একটি স্ট্রিং বা অ্যারে প্রিন্ট করেন আপনি এর কন্টেন্ট দেখেন।

উদাহরণ:

 puts [1,2,3] 1 2 3 

কিন্তু যখন আপনি আপনার নিজের অবজেক্ট প্রিন্ট করেন...

আপনি এটি দেখেন:

 #<Cat:0x29458e0> 

কেন?

কারণ আপনি রুবি কে বলনি কীভাবে এই ক্লাসকে একটি সেনসিবল উপায়ে ডিসপ্লে করবে।

আপনি এটিকে পরিবর্তন করতে পারেন যদি আপনি to_s মেথড ডিফাইন করেন।

চলুন দেখি কীভাবে কাজ করে!

to_s ইমপ্লিমেন্ট করা

যখন আপনি একটি অবজেক্টের সাথে puts ব্যবহার করেন, রুবি to_s মেথড কল করে অবজেক্টের স্ট্রিং রিপ্রেজেন্টেশন পাওয়ার জন্য।

ডিফল্টলি আপনি ক্লাসের নাম (Cat) পান... প্লাস কিছু নাম্বার যা object_id-কে হেক্সাডেসিমাল ফরম্যাটে রিপ্রেজেন্ট করে (0x29458e0)।

এখানে কীভাবে পরিবর্তন করবেন:

 class Cat def to_s "I'm a cat" end end puts Cat.new # "I'm a cat" 

আপনার ক্লাসে ইনস্ট্যান্স ভেরিয়েবল থাকলে, আপনি সেগুলো আপনার অবজেক্ট ডেসক্রিপশনের অংশ করতে পারেন।

এভাবে:

 class Cat attr_reader :color def initialize(color) @color = color end def to_s "I'm a #{color} cat" end end puts Cat.new("blue") # "I'm a blue cat" puts Cat.new("white") # "I'm a white cat" 

এখন আপনি এই অবজেক্ট প্রিন্ট করলে আরও উপকারী ইনফরমেশন দেখবেন।

এটা কুল না?

রুবি Inspect মেথড

আপনি একটি অবজেক্টকে দুটি সম্ভাব্য ভাবে রিপ্রেজেন্ট করতে পারেন।

প্রথম:

to_s ব্যবহার করে।

এটি হলো আপনি আপনার ইউজারদের কী দেখাতে চান যখন আপনি অবজেক্ট ডিসপ্লে করেন।

উদাহরণস্বরূপ, একটি টাইম অবজেক্টের সাথে, আপনি টাইমটি এমনভাবে ডিসপ্লে করবেন যেটি সেনসিবল (2018-12-28 19:17:28), তার পরিবর্তে না দেখাবেন টাইমটি কীভাবে স্টোরড (1546021067)।

তারপর:

আপনি অবজেক্ট inspect করতে পারেন, এটি আপনাকে অবজেক্টের একটি বেশি র النسخة দেয়।

প্র পার্থক্য কী?

  • to_s ডিফাইন করুন যাতে যখন আপনি puts ব্যবহার করবেন, এটি অবজেক্টের এই নির্দিষ্ট ভিউ দেখাবে।
  • inspect ডিফাইন করুন যাতে আপনি এবং অন্যান্য ডেভেলপার ডিবাগিং-এ সাহায্য পান।

এখানে একটি উদাহরণ:

 "abc".inspect 

এভাবে দেখাবে:

 "abc" 

Inspect কোটেশন মার্ক রাখে, এবং স্পেশাল ক্যারেক্টার (যেন \n নিউলাইনের জন্য) ভিজিবল হয়ে যায়।

সেরা অংশ?

আপনি আপনার নিজের ক্লাসে inspect মেথড ইমপ্লিমেন্ট করতে পারেন 🙂

এখানে কীভাবে:

 class Cat attr_reader :color def inspect "Cat - id: #{object_id} - color: #{color}" end end Cat.new("white").inspect # "Cat - id: 23316588 - color: white" 

এভাবেই আপনি সেলফ-ডেসক্রাইবিং অবজেক্ট তৈরি করতে পারেন!

ভিডিও টিউটোরিয়াল

সারসংক্ষেপ

আপনি রুবি inspect এবং to_s মেথড ব্যবহার করে আরও ভালো ক্লাস বিল্ড করার পদ্ধতি শিখেছেন!

আপনি যদি এই আর্টিকেলটি পছন্দ করেন তবে শেয়ার করুন যাতে আরও মানুষ এটিকে পেতে পারে।

পড়ার জন্য ধন্যবাদ।


  1. AASM দিয়ে রুবিতে স্টেট মেশিন মাস্টার করুন: একটি প্র্যাক্টিক্যাল গাইড

  2. রুবি Struct ও OpenStruct: দক্ষ ভ্যালু অবজেক্টস

  3. এক্সেলে আর্ট পোর্টফোলিও বানান: অবজেক্ট ব্যবহার করে ধাপে ধাপে গাইড

  4. স্বয়ংক্রিয়ভাবে এক্সেল ডেটাবেস আপডেট: ৪টি প্রমাণিত পদ্ধতি