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

रूबी चयन विधि का उपयोग कैसे करें (उदाहरण के साथ)

आप वस्तुओं की एक सरणी को फ़िल्टर करने के लिए रूबी में चयन विधि का उपयोग कर सकते हैं।

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

बिना select जो इस तरह दिखता है:

even_numbers = []

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

even_numbers

इतना आसान कुछ के लिए यह थोड़ा सा कोड है!

आइए जानें कि कैसे उपयोग करें 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 से अधिक स्टॉक वाले सभी फल खोजें"।

चयन को अन्य विधियों के साथ संयोजित करना

आप चयन विधि को किसी अन्य संख्यात्मक विधि के साथ जोड़ सकते हैं।

विशेष रूप से 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 . का उपयोग कर सकते हैं विधि।

इसे पसंद करें :

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 &select ...

यह बहुत आसान है!

  • find_all विधि select . के लिए एक उपनाम है ।
  • find विधि आपको कई वस्तुओं के बजाय एक विशिष्ट वस्तु को खोजने में मदद करती है।

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

filter

चुनने के विपरीत क्या है?

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

चुनने से यह आसान है :

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

लेकिन एक तरीका है जो चीजों को और स्पष्ट करता है।

वह तरीका है reject

उदाहरण :

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

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

रेल चयन विधि

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

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

यह select तरीका अलग है!

उदाहरण :

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

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

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

इस पर एक आखिरी नोट :

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

सारांश

आपने रूबी के सबसे उपयोगी तरीकों में से एक के बारे में सीखा है, जो सरणियों, श्रेणियों और हैश जैसी वस्तुओं के संग्रह के साथ काम करता है।

रूबी चयन विधि का उपयोग कैसे करें (उदाहरण के साथ)

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

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


  1. रूबी ग्रेप विधि का उपयोग कैसे करें (उदाहरण के साथ)

    आइए बात करते हैं grep . के बारे में विधि। यह विधि आपके लिए क्या कर सकती है? आप ग्रेप का उपयोग एरेज़ और रेंज जैसी असंख्य वस्तुओं को फ़िल्टर करने के लिए कर सकते हैं। “लेकिन चुनें पहले से ही ऐसा करता है!” हां, लेकिन grep एक अलग तरीके से काम करता है और यह अलग परिणाम देता है। आइए कुछ उदाहरण देखें।

  1. रूबी मानचित्र विधि का उपयोग कैसे करें (उदाहरण के साथ)

    मैप एक रूबी विधि है जिसका उपयोग आप ऐरे, हैश और रेंज के साथ कर सकते हैं। मानचित्र का मुख्य उपयोग डेटा को ट्रांसफ़ॉर्म करना है। उदाहरण के लिए : स्ट्रिंग्स की एक सरणी को देखते हुए, आप प्रत्येक स्ट्रिंग पर जा सकते हैं और प्रत्येक वर्ण को अपरकेस बना सकते हैं। या यदि आपके पास User . की सूची है ऑब्जेक्

  1. उदाहरण के साथ, लिनक्स में वॉच कमांड का उपयोग कैसे करें

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