এই আর্টিকেলে আপনি শিখবেন রুবি 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 মেথড ব্যবহার করে আরও ভালো ক্লাস বিল্ড করার পদ্ধতি শিখেছেন!
আপনি যদি এই আর্টিকেলটি পছন্দ করেন তবে শেয়ার করুন যাতে আরও মানুষ এটিকে পেতে পারে।
পড়ার জন্য ধন্যবাদ।