क्या माणिक में कमी के रूप में एक ही चीज़ इंजेक्ट की जाती है?


114

मैंने देखा कि वे एक साथ यहाँ दस्तावेज थे । क्या ये एक ही चीज हैं? रूबी के पास इतने सारे उपनाम (जैसे नक्शे / सरणियों के लिए इकट्ठा) क्यों हैं? बहुत बहुत धन्यवाद।

जवाबों:


160

हां, और इसे foldकई अन्य प्रोग्रामिंग भाषाओं और गणित में भी कहा जाता है। विभिन्न पृष्ठभूमि के साथ प्रोग्रामर के लिए सहज होने के लिए रूबी उपनाम बहुत कुछ। यदि आप #lengthएक पर उपयोग करना चाहते हैं Array, तो आप कर सकते हैं। यदि आप उपयोग करना चाहते हैं #size, तो यह भी ठीक है!


4
यदि आप अपना स्वयं का उपनाम बनाना चाहते हैं, तो आपको alias_method में रुचि हो सकती है ।
निक मैकुडी

23
रूबी में #length और #count बराबर नहीं हैं। # तरंग और # आकार हैं।
क्वोलोन प्रश्न

9
3. गति देता है NoMethodError; 3.साइज़ रिटर्न 4. स्पष्ट रूप से 3 एक सरणी नहीं है, लेकिन बतख टाइपिंग से सावधान रहें! (3_000_000_000_000_000.Size रिटर्न 8 और 3_000_000_000_000_000_000_000_000_000_000_000_000_000_000.Size रिटर्न 20; यह स्मृति की मात्रा लगती है।)
ChrisPhoenix

18
हम्म , मुझे लगता है कि वर्तमान रूबी डॉक्स रूबी- doc.org/core-2.2.3/Enumerable.html#method--reduce बेहतर हो सकता है अगर यह सिर्फ injectइतना ही कहता है ताकि उपयोगकर्ताओं को दो को पढ़ना न पड़े विवरण और यह पता लगाने की कोशिश करें कि क्या वे समान हैं ... क्या यह DRY सिद्धांत के साथ नहीं जाता है?
गैर

3
@ @ Point 無極 而 生, अच्छी बात है, मैं इस से उलझन में था जैसा कि आपने भविष्यवाणी की
neontapir

6

Enumerable#reduceइसे स्पष्ट रूप से निर्दिष्ट करने के प्रलेखन के अधिक हाल के संस्करण :

injectऔर reduceतरीकों उपनाम कर रहे हैं। कोई प्रदर्शन लाभ भी नहीं है।


1
मैं उन्हें इस बात पर आधारित करना पसंद करता हूं कि इसका उपयोग कैसे किया जाता है, जाहिर है कि सिर्फ शब्दार्थ के लिए। अगर इसकी एक खरीद ( &:+), कम, अगर यह एक ब्लॉक है, इंजेक्षन
TheRealMrCrowley
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.