ট্র্যাক
/
Gleam
Gleam
/
অনুশীলনী
/
স্প্রিং ক্লিনিং
স্প্রিং ক্লিনিং

স্প্রিং ক্লিনিং

লার্নিং অনুশীলনী

ভূমিকা

let assert অ্যাসারশন

Gleam-এ একটি মানের উপর প্যাটার্ন ম্যাচিং করার সময় আমাদের নিশ্চিত করতে হয় যে প্যাটার্নগুলো টাইপের প্রতিটি সম্ভাব্য মানের সাথে মেলে, অন্যথায় কোড কম্পাইল হবে না।

অ্যারেটি খালি থাকার ক্ষেত্রটি হ্যান্ডেল করেনি বলে এই ফাংশনটি প্রত্যাখ্যান করা উচিত:

pub fn get_first_element_or_crash(items: List(e)) -> e {
  case items {
    [item, ..] -> item
  }
}

Gleam প্রোগ্রামে বেশিরভাগ সময়ে আমরা প্রতিটি সম্ভাব্য ক্ষেত্র হ্যান্ডেল করতে চাই, কিন্তু প্রোটোটাইপ বা দ্রুত লেখা স্ক্রিপ্টের মতো কিছু প্রোগ্রামে আমরা হয়তো শুধু হ্যাপি পাথের দিকেই মন দিতে চাইব এবং বাকি ক্ষেত্রগুলোর জন্য কোড লিখতে চাইব না। এখানেই Gleam-এর let assert কাজে আসে।

let assert দিয়ে একটি প্যাটার্ন টাইপের কেবল কিছু সম্ভাব্য মানের সাথে মিলতে পারে, আর প্যাটার্নটি কোনো মানের সাথে না মিললে প্রোগ্রামটি ক্র্যাশ করবে। let assert ব্যবহার করে উপরের ফাংশনটি এভাবে লেখা যায়:

pub fn get_first_element_or_crash(items: List(e)) -> e {
  let assert [item, ..] = items
  item
}

Gleam লাইব্রেরিতে কখনোই let assert ব্যবহার করা উচিত নয়, কারণ এতে প্রোগ্রাম ক্র্যাশ করতে পারে। এর বদলে Result টাইপ ব্যবহার করা উচিত, আর এররগুলো কীভাবে হ্যান্ডেল হবে তা অ্যাপ্লিকেশন ডেভেলপারের উপর ছেড়ে দেওয়া উচিত।

নির্দেশনা

ইভেন্ট আয়োজক মিকা কাজে পদোন্নতি পেয়েছেন, আর নতুন দায়িত্বের অংশ হিসেবে এখন ইভেন্ট ডেটাবেসের ভার তাঁর কাছেই। তিনি দ্রুত খেয়াল করলেন যে ডেটার অনেকটাই এমনভাবে সংরক্ষিত যা নিয়ে কাজ করা কঠিন, তাই একবারই চালানোর একটি স্ক্রিপ্ট দিয়ে তা গুছিয়ে ফেলার জন্য আপনি আর তিনি মিলে কাজ করছেন।

যেহেতু স্ক্রিপ্টটি একবারই চালানো হবে, আর ডেটার কাঠামো নিয়ে আপনার পূর্ণ আস্থা আছে, তাই এখানে Gleam-এর let অ্যাসারশন ব্যবহার করাই ভালো বলে আপনি মনে করছেন।

1. এররগুলো বের করুন

প্রতিটি অতীত ইভেন্টে সেই ইভেন্ট চলাকালীন ঘটে যাওয়া সমস্যার একটি তালিকা আছে। এগুলো রেজাল্ট হিসেবে সংরক্ষণ করা হয়েছে, কিন্তু এরা সবসময়ই Error ভ্যারিয়েন্ট।

extract_error ফাংশনটি লিখুন, যা এমন একটি রেজাল্ট নেয় যেটি সবসময় একটি Error হবে বলে ধরে নেওয়া হয়, আর ভেতরে থাকা এরর মানটি রিটার্ন করে।

extract_error(Error("Not enough coffee"))
// -> "Not enough coffee"

2. টিম প্রিফিক্স সরান

টিমের নামের আগে "Team " শব্দটি বসানো হয়েছে, কিন্তু এর দরকার নেই। টিমের নাম থেকে প্রিফিক্সটি সরানোর জন্য remove_team_prefix ফাংশনটি লিখুন।

remove_team_prefix("Team Turtle")
// -> "Turtle"

3. অঞ্চল ও টিম আলাদা করুন

প্রতিটি ইভেন্ট পরিচালনা করে একটি টিম, আর প্রতিটি টিম belongs একটি অঞ্চলের অন্তর্ভুক্ত। ডেটাবেসে এগুলো একটি কমা দিয়ে আলাদা করে একক স্ট্রিং হিসেবে সংরক্ষিত থাকে।

split_region_and_team ফাংশনটি লিখুন, যা স্ট্রিংটিকে দুটি স্ট্রিংয়ের একটি টাপলে ভাগ করবে: একটি অঞ্চলের জন্য, আর একটি টিমের জন্য। টিমের নাম থেকে "Team " প্রিফিক্সটি সরিয়ে ফেলা উচিত।

split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Gleam Exercism

স্প্রিং ক্লিনিং শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Gleam ট্র্যাকের 33টি কনসেপ্ট122টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।