ট্র্যাক
/
Ruby
Ruby
/
অনুশীলনী
/
বুটিক ইনভেন্টরির উন্নতি
বুটিক ইনভেন্টরির উন্নতি

বুটিক ইনভেন্টরির উন্নতি

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

ভূমিকা

OpenStruct দিয়ে আপনি সহজেই একটি Hash থেকে অবজেক্ট তৈরি করতে পারেন। Hash কী (key) দিয়ে অ্যাক্সেস করতে না গিয়ে, বরং OpenStruct আমাদের মেথড ব্যবহার করে মান অ্যাক্সেস ও সেট করার সুযোগ দেয়।

attributes = { name: "Jeremy Walker", age: 21, location: "Nomadic" }
person = OpenStruct.new(attributes)

person.name
#=> Jeremy Walker

person.location
#=> Nomadic

# Update the age
person.age = 35

# It sets correctly
person.age
#=> 35

এই পদ্ধতির একটি বাড়তি সুবিধা হলো, ব্লক সিনট্যাক্স ব্যবহার করার সময় আমরা একটি শর্টকাট কাজে লাগাতে পারি। যেসব ক্ষেত্রে একটি ব্লক কেবল একটি মেথড কল করে, সেখানে আপনি ব্লকটির জায়গায় &: আর তারপর মেথডের নাম বসাতে পারেন। উদাহরণস্বরূপ, নিচের দুটি লাইন একই কথা বোঝায়:

people.sum { |person| person.age }
people.sum(&:age)

স্ট্যান্ডার্ড লাইব্রেরি

আগের অনুশীলনীগুলোতে আপনি যে ক্লাসগুলো দেখেছেন, সেগুলো সবই Ruby-এর কোর লাইব্রেরির অংশ ছিল।

OpenStruct হলো Ruby-এর স্ট্যান্ডার্ড লাইব্রেরির অংশ (যাকে প্রায়ই ছোট করে "stdlib" বলা হয়), যা তারিখ, json আর নেটওয়ার্কিংয়ের মতো বিষয় নিয়ে কাজ করার জন্য ক্লাসের একটি সংগ্রহ। এটি আপনার কোড নিয়ে কাজ করা সহজ করে তোলার জন্য কিছু দরকারি সুবিধাও দেয়।

Core Library থেকে আসে না এমন ক্লাস, অর্থাৎ ভিন্ন ফাইলে থাকা আপনার নিজের কোড, stdlib-এর ক্লাস বা এক্সটার্নাল ডিপেন্ডেন্সি ব্যবহার করার সময়, সেগুলো ব্যবহারের আগে আমাদের require মেথড দিয়ে ইমপোর্ট করে নিতে হয়। উদাহরণস্বরূপ:

require 'ostruct'

person = OpenStruct.new(name: "Jeremy Walker")
# ...

নির্দেশনা

আপনি আগে যে স্টক ম্যানেজমেন্ট সিস্টেমটি তৈরি করেছিলেন, তার উপরেই কাজ চালিয়ে যাচ্ছেন। OpenStruct আর ব্লক শর্টকাট আবিষ্কার করার পর আপনি সিদ্ধান্ত নিয়েছেন কোডটি একটু রিফ্যাক্টর করবেন। আইটেমগুলো হ্যাশ হিসেবে সংরক্ষণ করার বদলে আপনি আপনার নতুন অর্জিত দক্ষতাগুলো কাজে লাগাবেন।

1. আইটেম রিট্রিভ করার সুযোগ দিন

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

inventory = BoutiqueInventory.new([
  {price: 65.00, name: "Maxi Brown Dress", quantity_by_size: {s: 3, m: 7, l: 8, xl: 4}},
  {price: 50.00, name: "Red Short Skirt", quantity_by_size: {}},
  {price: 29.99, name: "Black Short Skirt", quantity_by_size: {s: 1, xl: 4}},
  {price: 20.00, name: "Bamboo Socks Cats", quantity_by_size: {s: 7, m: 2}}
])

inventory.items.first.name
# => "Maxi Brown Dress"

inventory.items.first.price
# => 65

inventory.items.size
# => 4

2. item_names রিফ্যাক্টর করুন

হ্যাশের বদলে আপনি যে নতুন ব্লক শর্টকাট শিখেছেন, তা ব্যবহার করতে item_names রিফ্যাক্টর করুন। মনে করিয়ে দেওয়ার জন্য, মেথডটি রিটার্ন করবে:

BoutiqueInventory.new([
  {price: 65.00, name: "Maxi Brown Dress", quantity_by_size: {s: 3, m: 7, l: 8, xl: 4}},
  {price: 50.00, name: "Red Short Skirt", quantity_by_size: {}},
  {price: 29.99, name: "Black Short Skirt", quantity_by_size: {s: 1, xl: 4}},
  {price: 20.00, name: "Bamboo Socks Cats", quantity_by_size: {s: 7, m: 2}}
]).item_names

# => ["Bamboo Socks Cats", "Black Short Skirt", "Maxi Brown Dress", "Red Short Skirt"]

3. total_stock রিফ্যাক্টর করুন

হ্যাশ রেফারেন্স করার বদলে OpenStruct-এর মেথড ব্যবহার করতে total_stock রিফ্যাক্টর করুন। মনে করিয়ে দেওয়ার জন্য, মেথডটি রিটার্ন করবে:

BoutiqueInventory.new([
  {price: 65.00, name: "Maxi Brown Dress", quantity_by_size: {s: 3, m: 7, l: 8, xl: 4}},
  {price: 50.00, name: "Red Short Skirt", quantity_by_size: {}},
  {price: 29.99, name: "Black Short Skirt", quantity_by_size: {s: 1, xl: 4}},
  {price: 20.00, name: "Bamboo Socks Cats", quantity_by_size: {s: 7, m: 2}}
]).total_stock

# => 36
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Ruby Exercism

বুটিক ইনভেন্টরির উন্নতি শুরু করতে প্রস্তুত?

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