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

डुप्लीकेट हटाने के लिए रूबी यूनिक विधि का उपयोग कैसे करें

uniq . के साथ विधि आप एक सरणी से सभी डुप्लिकेट तत्वों को हटा सकते हैं।

आइए देखें कि यह कैसे काम करता है!

यदि आपके पास इस तरह की एक सरणी है :

n = [1,1,1,2,3,4,5]

जहां नंबर 1 दोहराया गया है।

कॉलिंग uniq इस सरणी पर अतिरिक्त को हटा देता है और अद्वितीय संख्याओं के साथ एक नई सरणी देता है।

उदाहरण :

n.uniq

# [1,2,3,4,5]

ध्यान दें कि uniq नहीं बदलेगा n (मूल सरणी), इसलिए हमें या तो uniq! . पर कॉल करने की आवश्यकता है , या नई सरणी को सहेजने के लिए।

उदाहरण :

unique_numbers = n.uniq

बहुत आसान है, है ना?

लेकिन बहुत से लोग नहीं जानते कि uniq एक ब्लॉक लेता है।

एक ब्लॉक के साथ, आप और अधिक उन्नत कर सकते हैं चीजें।

मुझे समझाने दो…

एक ब्लॉक के साथ रूबी यूनीक विधि का उपयोग कैसे करें

जब आप uniq . को कॉल करते हैं , यह आपके सरणी तत्वों से हैश बनाकर काम करता है।

हैश में प्रत्येक तत्व एक कुंजी बन जाता है।

क्योंकि हैश कुंजियाँ अद्वितीय हैं, हम हैश में सभी कुंजियों की एक सूची प्राप्त कर सकते हैं, यह सूची अद्वितीय तत्वों के साथ हमारी नई सरणी बन जाती है।

अब :

अगर आप किसी चीज़ को अद्वितीय बनाना चाहते हैं, तो आप एक ब्लॉक पास कर सकते हैं।

यहां एक उदाहरण दिया गया है :

fruits = %w(orange apple banana)

"नारंगी" और "केला" में समान लंबाई के 6 वर्ण हैं।

यदि हम uniq का उपयोग करते हैं इस तरह :

fruits.uniq(&:size)

# ["orange", "apple"]

फिर हम "केला" छोड़ते हैं क्योंकि जब हम स्ट्रिंग्स की उनके आकार से तुलना करते हैं तो यह एक डुप्लिकेट होगा।

एक और उदाहरण :

objects = [1, 2, "a", "b", :c, :d]

objects.uniq(&:class)

यह आपको कक्षा के अनुसार अद्वितीय वस्तुओं के साथ एक सरणी देता है:

[1, "a", :c]

क्या आप इसकी ताकत देखते हैं?

जब आप किसी ब्लॉक को uniq . पर पास करते हैं , आप वास्तव में यह परिभाषित करने में सक्षम हैं कि किन नियमों से किसी चीज़ को अद्वितीय माना जाता है।

अनेक शर्तों के साथ Uniq का उपयोग कैसे करें

आप कई शर्तों का उपयोग कर सकते हैं!

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

मान लें कि आपके पास एक User है वर्ग, इसके साथ:

  • age
  • name
  • country

आप एक ही उम्र के प्रति देश में केवल एक व्यक्ति चाहते हैं।

एक ब्लॉक के साथ आसान :

[david, petter, raphael].uniq { |person| [person.age, person.country] }

इस कोड के साथ, कुछ अद्वितीय माने जाने से पहले दोनों स्थितियों का मिलान होना चाहिए।

यह कैसे काम करता है?

ब्लॉक के बिना, वस्तु हैश कुंजी बन जाती है।

एक ब्लॉक के साथ, प्राप्त मूल्य हैश कुंजी बन जाता है, और वस्तु हैश मान बन जाती है।

फिर…

रूबी मान लेता है और उन्हें एक नई सरणी के रूप में लौटाता है।

ये सिर्फ कार्यान्वयन विवरण हैं, लेकिन मुझे ये बहुत दिलचस्प लगते हैं इसलिए मैंने सोचा कि मैं इन्हें आपके साथ साझा करूंगा।

सारांश

आपने uniq . के बारे में जान लिया है रूबी में विधि! वास्तव में इसका उपयोग कैसे करना है, यह क्यों उपयोगी है और यह कैसे काम करता है।

अब इस विधि से अभ्यास करें ताकि आप इसे याद रख सकें।

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


  1. रूबी उपनाम कीवर्ड का उपयोग कैसे करें

    आप रूबी पद्धति को दो तरह से वैकल्पिक नाम दे सकते हैं: उपनाम (कीवर्ड) उपनाम_विधि क्योंकि वे एक ही काम को थोड़े अलग तरीके से करते हैं, यह एक भ्रमित करने वाला विषय हो सकता है। यह छवि मतभेदों का सारांश है : आइए एक ठोस समझ पाने के लिए इन अंतरों को और अधिक विस्तार से देखें! उपनाम कीवर्ड सबसे पहले

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

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

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

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