Gleam ট্রু ও ফলস মান প্রকাশ করতে Bool টাইপ ব্যবহার করে। মান মাত্র দুটি: True এবং False। এই মানগুলো একটি ভ্যারিয়েবলে বাইন্ড করা যায়:
let true_variable = True
let false_variable = False
&&, || এবং ! অপারেটর দিয়ে বুলিয়ান মান নিয়ে কাজ করা যায়:
True && True // -> True
True && False // -> False
False || True // -> True
False || False // -> False
!False // -> True
!True // -> False
&& ও || অপারেটর শর্ট-সার্কিট ইভ্যালুয়েশন ব্যবহার করে, অর্থাৎ অপারেটরের ডান দিকের এক্সপ্রেশনটি কেবল প্রয়োজন হলেই মূল্যায়ন করা হয়।
প্রতিটি অপারেটরের প্রিসিডেন্স আলাদা, যেখানে ! কে && ও || অপারেটরের আগে মূল্যায়ন করা হয়। দ্বিতীয় বন্ধনী দিয়ে এক্সপ্রেশনের একটি অংশকে বাকি অংশের আগে মূল্যায়ন করা যায়:
!True && False // -> False
!{True && False} // -> True
এই অনুশীলনীতে আপনাকে ক্লাসিক গেম Pac-Man-এর কিছু নিয়ম Gleam ফাংশনে অনুবাদ করতে হবে।
আপনার অনুবাদ করার জন্য চারটি নিয়ম আছে, যেগুলো সবই গেমের স্টেটের সাথে সম্পর্কিত।
আর্গুমেন্টগুলো কীভাবে আসছে তা নিয়ে চিন্তা করবেন না, শুধু কাঙ্ক্ষিত ফলাফল রিটার্ন করার জন্য আর্গুমেন্টগুলো কীভাবে একসাথে জুড়বেন সেদিকে মন দিন।
eat_ghost ফাংশনটি ডিফাইন করুন, যা দুটি আর্গুমেন্ট নেয় (Pac-Man-এর একটি পাওয়ার পেলেট সক্রিয় আছে কি না এবং Pac-Man একটি ভূত স্পর্শ করছে কি না) এবং Pac-Man ভূত খেতে সক্ষম কি না তা বুলিয়ান মান হিসেবে রিটার্ন করে। ফাংশনটি True রিটার্ন করবে কেবল তখনই, যখন Pac-Man-এর একটি পাওয়ার পেলেট সক্রিয় থাকে এবং সে একটি ভূত স্পর্শ করছে।
eat_ghost(False, True)
// -> False
score ফাংশনটি ডিফাইন করুন, যা দুটি আর্গুমেন্ট নেয় (Pac-Man একটি পাওয়ার পেলেট স্পর্শ করছে কি না এবং Pac-Man একটি ডট স্পর্শ করছে কি না) এবং Pac-Man স্কোর করেছে কি না তা বুলিয়ান মান হিসেবে রিটার্ন করে। Pac-Man একটি পাওয়ার পেলেট বা একটি ডট স্পর্শ করলে ফাংশনটি True রিটার্ন করবে।
score(True, True)
// -> True
lose ফাংশনটি ডিফাইন করুন, যা দুটি আর্গুমেন্ট নেয় (Pac-Man-এর একটি পাওয়ার পেলেট সক্রিয় আছে কি না এবং Pac-Man একটি ভূত স্পর্শ করছে কি না) এবং Pac-Man হারে কি না তা বুলিয়ান মান হিসেবে রিটার্ন করে। Pac-Man একটি ভূত স্পর্শ করলে এবং তার কোনো পাওয়ার পেলেট সক্রিয় না থাকলে ফাংশনটি True রিটার্ন করবে।
lose(False, True)
// -> True
win ফাংশনটি ডিফাইন করুন, যা তিনটি আর্গুমেন্ট নেয় (Pac-Man সব ডট খেয়ে ফেলেছে কি না, Pac-Man-এর একটি পাওয়ার পেলেট সক্রিয় আছে কি না, এবং Pac-Man একটি ভূত স্পর্শ করছে কি না) এবং Pac-Man জিতেছে কি না তা বুলিয়ান মান হিসেবে রিটার্ন করে। Pac-Man সব ডট খেয়ে ফেললে এবং ৩ নম্বর অংশে ডিফাইন করা আর্গুমেন্ট অনুযায়ী না হারলে ফাংশনটি True রিটার্ন করবে।
win(False, True, False)
// -> False
Exercism-এ সাইন আপ করুন, Gleam ট্র্যাকের 33টি কনসেপ্ট122টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।