ट्रैक
/
Ruby
Ruby
/
अभ्यास
/
बुटीक इन्वेंट्री में सुधार
बुटीक इन्वेंट्री में सुधार

बुटीक इन्वेंट्री में सुधार

सीखने का अभ्यास

परिचय

OpenStruct आपको आसानी से एक Hash से एक ऑब्जेक्ट बनाने देता है। Hash कीज़ के ज़रिए वैल्यू तक पहुँचने के बजाय, 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, और नेटवर्किंग जैसी चीज़ों के साथ काम करने के लिए है। यह आपके कोड के साथ काम करना आसान बनाने के लिए कुछ उपयोगी सुविधाएँ भी प्रदान करता है।

जब हम ऐसी क्लास का उपयोग करते हैं जो कोर लाइब्रेरी से नहीं हैं, जैसे अलग-अलग फाइलों में आपका अपना कोड, 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 को रीफैक्टर कीजिए

total_stock को हैश का संदर्भ देने के बजाय OpenStruct के मेथड का इस्तेमाल करने के लिए रीफैक्टर कीजिए। याद रहे, इस मेथड को यह लौटाना चाहिए:

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 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।