सरणी के तत्वों का वर्ग करना एक सामान्य प्रोग्रामिंग कार्य है। रूबी इसे कुशलतापूर्वक पूरा करने के कई सुंदर तरीके प्रदान करता है। यह लेख चार दृष्टिकोणों का पता लगाता है, उनकी प्रभावशीलता और पठनीयता की तुलना करता है।
विषयवस्तु की तालिका
- विधि 1:
map
विधि का उपयोग करना - विधि 2:
each
विधि का उपयोग करना - विधि 3:
each_with_index
का उपयोग करना - विधि 4:
inject
का उपयोग करना - निष्कर्ष
- अक्सर पूछे जाने वाले प्रश्न
विधि 1: map
विधि का उपयोग करना
map
विधि रूबी में सरणी के तत्वों का वर्ग करने का सबसे मुहावरेदार और कुशल तरीका है। यह प्रत्येक तत्व पर पुनरावृति करता है, कोड का एक दिया गया ब्लॉक लागू करता है, और परिणामों वाली एक नई सरणी देता है। इसकी कार्यात्मक शैली और स्पष्टता के लिए इस दृष्टिकोण को प्राथमिकता दी जाती है, यह सुनिश्चित करते हुए कि मूल सरणी अपरिवर्तित रहे।
array = [1, 2, 3, 4, 5]
squared_array = array.map { |x| x**2 }
puts squared_array # आउटपुट: [1, 4, 9, 16, 25]
विधि 2: each
विधि का उपयोग करना
each
विधि प्रत्येक तत्व के माध्यम से पुनरावृति करती है लेकिन सीधे एक नई सरणी वापस नहीं करती है। each
का उपयोग करके तत्वों का वर्ग करने के लिए, लूप के भीतर एक नई सरणी बनाई जानी चाहिए और उसमें पॉप्युलेट किया जाना चाहिए। यह map
की तुलना में कम संक्षिप्त है।
array = [1, 2, 3, 4, 5]
squared_array = []
array.each { |x| squared_array << x**2 }
puts squared_array # आउटपुट: [1, 4, 9, 16, 25]
विधि 3: each_with_index
का उपयोग करना
each_with_index
पुनरावृत्ति के दौरान तत्व और उसकी अनुक्रमणिका दोनों प्रदान करता है। वर्ग करने के लिए सख्ती से आवश्यक नहीं है, यह मूल्य और स्थिति दोनों पर निर्भर संचालन के लिए उपयोगी है।
array = [1, 2, 3, 4, 5]
squared_array = []
array.each_with_index { |x, index| squared_array << x**2 }
puts squared_array # आउटपुट: [1, 4, 9, 16, 25]
विधि 4: inject
का उपयोग करना
inject
विधि (जिसे reduce
भी कहा जाता है) सरणी पर एक परिणाम संचित करती है। शक्तिशाली होने के बावजूद, यह map
की तुलना में साधारण वर्ग के लिए कम सहज है और अनावश्यक जटिलता जोड़ता है।
array = [1, 2, 3, 4, 5]
squared_array = array.inject([]) { |result, x| result << x**2 }
puts squared_array # आउटपुट: [1, 4, 9, 16, 25]
निष्कर्ष
सरणी के तत्वों का वर्ग करने के लिए, map
विधि सबसे सुंदर और कुशल समाधान प्रदान करती है। इसकी संक्षिप्तता और कार्यात्मक शैली इसे पसंदीदा विकल्प बनाती है। जबकि अन्य विधियाँ काम करती हैं, वे अतिरिक्त जटिलता या वर्बोसिटी के कारण कम उपयुक्त हैं।
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: क्या मैं मूल सरणी को संशोधित कर सकता हूँ? उत्तर: मूल सरणी को मौके पर संशोधित करना संभव है, लेकिन बेहतर कोड स्पष्टता और अनपेक्षित दुष्प्रभावों को रोकने के लिए आमतौर पर एक नई सरणी बनाना अनुशंसित है।
प्रश्न: गैर-संख्यात्मक तत्वों के बारे में क्या? उत्तर: गैर-संख्यात्मक तत्वों का वर्ग करने से एक TypeError
होगा। वर्ग करने से पहले गैर-संख्यात्मक तत्वों को फ़िल्टर करने के लिए select
जैसी विधियों का उपयोग करें।
प्रश्न: क्या प्रदर्शन में अंतर हैं? उत्तर: बड़ी सरणियों के लिए, मामूली प्रदर्शन अंतर मौजूद हो सकते हैं, लेकिन map
आम तौर पर अत्यधिक अनुकूलित होता है। जब तक कि बहुत बड़े डेटासेट से निपटना न हो, तब तक अंतर आमतौर पर नगण्य होते हैं।