বুলিয়ান কী?
একটি বুলিয়ান হলো একটি লজিক স্টেটমেন্টে ব্যবহৃত একটি মান যা বলে কোনো জিনিস কি true অথবা false বলে বিবেচিত।
এটি সিদ্ধান্ত নেওয়ার জন্য ব্যবহার করা যায়।
রুবিতে আমাদের Boolean ক্লাস নেই, কিন্তু বুলিয়ান অবজেক্ট আছে!
আমাদের কাছে true এবং false আছে।
যেগুলো TrueClass এবং FalseClass-এর সিঙ্গলটন অবজেক্ট।
আপনি বুলিয়ান মান পান যখন আপনি এই মেথডগুলো ব্যবহার করেন:
empty?all?match?
এবং সমান চিহ্ন দিয়ে জিনিসগুলো তুলনা করলে:
1 == 1 # true
মনে রাখবেন == রুবিতেও একটি মেথড, এর মানে এর আচরণ পরিবর্তন হতে পারে কীভাবে এই মেথডটি ইমপ্লিমেন্ট করা হয়েছে তার ওপর নির্ভর করে।
Truthy এবং Falsy মান
Truthy মান কী?
এটি হলো একটি মান যা বুলিয়ান কনটেক্সটে, যেন if স্টেটমেন্টে, true বলে বিবেচিত হয়।
রুবিতে সব কিছু truthy কিন্তু এই দুটি ছাড়া:
falsenil
এই দুটি মান, এবং কেবল এই দুটি, আমরা "falsy" বলি।
প্র্যাক্টিসে বুলিয়ান
এটি মানে যদি আপনার একটি কন্ডিশন থাকে...
এভাবে:
if bacon puts "we got bacon" end
রুবি চেক করে bacon কি truthy (false / nil ছাড়া যেকোনো জিনিস) স্ট্রিং প্রিন্ট করার আগে।
অন্য কথায়:
আপনাকে nil চেক করতে হয় না যদি আপনি bacon-এর ওপর কোনো মেথড কল না করেন।
সেফ নেভিগেটর
কখনো কখনো আপনি অবজেক্টের ওপর একটি মেথড কল করতে চান।
এভাবে:
if bacon.stock # ... end
যদি bacon nil হয় তবে এটি এরর দেবে, এটিকে এড়াতে আপনি নিচের কাজটি করতে পারেন...
উদাহরণ:
if bacon&.stock # ... end
এই &. হলো সেফ নেভিগেশন অপারেটর এবং এটি রুবি ২.৩-এ পরিচয় করানো হয়েছিল।
বুলিয়ান মেথড
আপনি কি কোয়েশ্চন মার্ক দিয়ে শেষ হওয়া মেথডগুলো দেখেছেন?
empty? এর মত।
আমরা এগুলোকে "প্রেডিকেট মেথড" বলি এবং কনভেনশন অনুযায়ী এগুলো সবসময় true বা false রিটার্ন করে।
আপনি নিজের লিখতে পারেন:
def published? # ... end def ready? # ... end
এটি একটি দুর্দান্ত প্যাটার্ন যা আপনার কোডকে আরও রুবি-লাইক করবে।
বুলিয়ান প্যারামিটার ভালো আইডিয়া নয়
আমরা বুলিয়ান মেথড নিয়ে আলোচনা করেছি, যা খুব ভালো, কিন্তু আপনি যা এড়াতে চান সেটি হলো বুলিয়ান প্যারামিটার।
উদাহরণ:
def bacon(raw) end bacon(false)
আপনি bacon(false) দেখলে আপনাকে কোনো ধারণা নেই এই false কী বোঝাচ্ছে।
আপনাকে কোডের ভিতরে খুঁজে বের করতে হবে।
उस ওপর, একটি বুলিয়ান মান মানে আপনার মেথড প্রয়োজনের চেয়ে বেশি জটিল হয়ে যাবে।
সমাধান?
মেথডকে দুভাগে ভাগ করুন, বা আপনার কোড এমন ডিজাইন করুন যাতে এটার প্রয়োজন না পড়ে।
বুলিয়ান লজিক
TrueClass এবং FalseClass কয়েকটি মেথড ইমপ্লিমেন্ট করে।
যেমন to_s, এবং inspect।
কিন্তু আরও আকর্ষণীয় হলো:
&|^
এই অদ্ভুত লুকিং মেথডগুলো কী?
বুলিয়ান লজিক।
এখানে একটি বুলিয়ান লজিক টেবিল:
| নাম | সিম্বল | TRUE / TRUE | TRUE / FALSE |
|---|---|---|---|
| AND | & | true | false |
| OR | | | true | true |
| XOR | ^ | false | true |
উদাহরণ:
true & true
যদিও আমরা বুলিয়ান লজিক আমাদের কোডে কম ব্যবহার করি, এটি কম্পিউটার কীভাবে কাজ করে তার ফাউন্ডেশন তৈরি করে, তাই এর সম্পর্কে জানা আকর্ষণীয়।
সারসংক্ষেপ
আপনি রুবিতে বুলিয়ান মান সম্পর্কে শিখেছেন! মনে রাখবেন সব কিছু "truthy", একমাত্র এক্সেপশন হলো false এবং nil।
এই আর্টিকেলটি শেয়ার করতে ভুলবেন না যাতে আরও মানুষ এটিকে পেতে পারে 🙂
পড়ার জন্য ধন্যবাদ।