Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

रूबी की `select` मेथड में महारत हासिल करें: व्यावहारिक उदाहरण और उपयोग गाइड

आप ऑब्जेक्ट्स के ऐरे को फ़िल्टर करने के लिए रूबी में select मेथड का उपयोग कर सकते हैं।

उदाहरण के लिए, आप किसी सूची में सभी सम संख्याएँ ढूंढ सकते हैं।

select के बिना यह कुछ इस तरह दिखता है:

even_numbers = []
[1,2,3,4,5,6].each do |n|
  if n.even?
    even_numbers << n
  end
end
even_numbers

इतने सरल काम के लिए यह काफी कोड है!

आइए सीखते हैं कि select का उपयोग कैसे करें।

Select मेथड उदाहरण

select का उपयोग करने के लिए एक ब्लॉक की आवश्यकता होती है।

ब्लॉक के अंदर, आपको कुछ ऐसा वापस करना होगा जो true या false में मूल्यांकन हो, और select आपके ऐरे को फ़िल्टर करने के लिए इसका उपयोग करेगा।

आप इस लेख को पढ़कर रूबी में बूलियन मानों के बारे में जान सकते हैं।

यहाँ एक उदाहरण है:

[1,2,3,4,5,6].select { |n| n.even? }

यह परिचय में पहले उदाहरण के समान काम करेगा, लेकिन बहुत कम कोड के साथ।

वास्तव में, हम इसे और भी कम कर सकते हैं।

इस तरह:

[1,2,3,4,5,6].select(&:even?)

इस तरह का शॉर्टकट केवल तब काम करता है जब आपको ऐरे के प्रत्येक तत्व पर सीधे एक मेथड कॉल करना होता है।

वैसे, आप select का उपयोग हैश के साथ भी कर सकते हैं।

उदाहरण:

stock = { apples: 10, oranges: 5, bananas: 1 }
stock.select { |k, v| v > 1 } # {:apples=>10, :oranges=>5}

जहाँ k कुंजी को दर्शाता है और v मान को दर्शाता है।

मेरा मतलब है:

"मुझे 1 से अधिक स्टॉक वाले सभी फल ढूंढ दो।"

अन्य मेथड्स के साथ Select को संयोजित करना

आप select मेथड को किसी अन्य Enumerable मेथड के साथ संयोजित कर सकते हैं।

सबसे विशेष रूप से with_index।

उदाहरण:

fruits = %w(apple orange banana)
fruits.select.with_index { |word, idx| idx.even? } # ["apple", "banana"]

यह आपको ऑब्जेक्ट के बजाय इंडेक्स का उपयोग करके फ़िल्टर करने की अनुमति देता है (इस मामले में एक स्ट्रिंग)।

इन-प्लेस ऐरे फ़िल्टरिंग

ऐरे पर select का उपयोग करने से हमेशा एक नया ऐरे बनता है।

यदि आप इसके बजाय मूल ऐरे को बदलना चाहते हैं, तो आप select! मेथड का उपयोग कर सकते हैं।

यहाँ बताया गया है:

fruits = %w(apple orange banana)
fruits.select! { |fruit| fruit.start_with? "a" } # ["apple"]

विस्मयादिबोधक चिह्न (जैसे select!) से समाप्त होने वाली मेथड्स नया ऑब्जेक्ट लौटाने के बजाय ऑब्जेक्ट को बदल देती हैं, लेकिन यह नियम भाषा द्वारा लागू नहीं किया जाता है।

यह हमारे बीच केवल एक कन्वेंशन है।

Find बनाम Select

select तब बढ़िया होता है जब आप किसी सूची को फ़िल्टर करना चाहते हैं और परिणामों के साथ एक ऐरे प्राप्त करना चाहते हैं।

लेकिन क्या होगा यदि आप केवल एक ऑब्जेक्ट ढूंढना चाहते हैं?

आप find मेथड का उपयोग कर सकते हैं।

इस तरह:

letters = %w(a aa aaa aaaa)
letters.find { |l| l.size == 3 } # "aaa"
letters.find { |l| l.size == 10 } # nil

find आपको पहला मैच देता है, या nil यदि यह नहीं मिलता है।

Find All मेथड को समझना

यदि आप find_all मेथड के बारे में सोच रहे हैं, और यह find और select से कैसे संबंधित है...

यह बहुत सरल है!

  • find_all मेथड select का एक उपनाम (alias) है।
  • find मेथड आपको एक विशिष्ट ऑब्जेक्ट खोजने में मदद करता है, कई ऑब्जेक्ट्स के बजाय।

रूबी 2.6 select के लिए एक और उपनाम जोड़ता है:

filter

Select का विपरीत क्या है?

आप उन तत्वों को हटा सकते हैं जो आप नहीं चाहते, बजाय उनके चुनने के जिन्हें आप चाहते हैं।

select के साथ यह आसान है:

[1,2,3,4,5,6].select { |n| n != 4 }

लेकिन एक मेथड है जो चीजों को अधिक स्पष्ट बनाता है।

वह मेथड है reject।

उदाहरण:

[1,2,3,4,5,6].reject { |n| n == 4 }

आपको प्रदर्शन या अन्यथा के संदर्भ में कोई तकनीकी लाभ नहीं मिलता, लेकिन यह आपके कोड को बेहतर बनाएगा।

Rails Select मेथड

मैं नहीं चाहता कि आप भ्रमित हों जब आप Rails मॉडल्स के साथ काम करें और सीखें कि आप वहां भी select का उपयोग कर सकते हैं।

आपको पता होना चाहिए कि...

यह select मेथड अलग है!

उदाहरण:

Fruit.select(:id, :name, :color)

जब आप ActiveRecord मॉडल के साथ select का उपयोग करते हैं तो आप डेटाबेस से विशिष्ट कॉलम मांग रहे होते हैं।

जहाँ तक मैं समझता हूँ यह ज्यादातर प्रदर्शन कारणों से किया जाता है।

इस पर एक अंतिम नोट:

यदि आप Rails ऐप के अंदर एक नियमित ऐरे के साथ काम कर रहे हैं तो आप वही select मेथड उपयोग कर रहे हैं जिसके बारे में हम इस पूरे लेख में बात कर रहे हैं।

सारांश

आपने select के बारे में सीखा, जो ऐरे, रेंज और हैश जैसे ऑब्जेक्ट्स के संग्रह के साथ काम करने के लिए रूबी की सबसे उपयोगी मेथड्स में से एक है।

रूबी की `select` मेथड में महारत हासिल करें: व्यावहारिक उदाहरण और उपयोग गाइड

अब आपकी बारी है अपना एडिटर खोलें और इसका उपयोग करें।

पढ़ने के लिए धन्यवाद!

  1. Ruby के grep मेथड में महारत: कोड उदाहरणों के साथ एक व्यावहारिक गाइड Ruby के grep मेथड में महारत: कोड उदाहरणों के साथ एक व्यावहारिक गाइड

    आइए grep मेथड के बारे में बात करते हैं। यह मेथड आपके लिए क्या कर सकता है? आप enumerable ऑब्जेक्ट्स को फ़िल्टर करने के लिए Grep का उपयोग कर सकते हैं, जैसे Arrays और Ranges। "लेकिन select पहले से ही ऐसा करता है!" हाँ, लेकिन grep अलग तरीके से काम करता है और अलग परिणाम उत्पन्न करता है। आइए कुछ

  1. Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड

    Map एक Ruby मेथड है जिसका उपयोग आप Arrays, Hashes और Ranges के साथ कर सकते हैं। map का मुख्य उपयोग डेटा को ट्रांसफॉर्म करना है। उदाहरण के लिए: स्ट्रिंग्स की एक सरणी दिए जाने पर, आप हर स्ट्रिंग पर जा सकते हैं और हर कैरेक्टर को UPPERCASE बना सकते हैं। या यदि आपके पास User ऑब्जेक्ट्स की एक सूची है... आ

  1. Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण

    Linux में watch कमांड एक काम करता है – एक कमांड को दोहराता है और परिणाम को बार-बार आउटपुट करता है, जिससे आप परिवर्तनों को देख सकते हैं। यहाँ इसका उपयोग कैसे करें। watch कमांड सिंटैक्स watch कमांड का सिंटैक्स इस प्रकार है: watch OPTIONS COMMAND ध्यान दें कि: OPTIONS नीचे दी गई तालिका से विकल्पों की