मैं एक रेल ऐप्लिकेशन बनाने में कर रहा हूँ और मेरी तरीकोंमुझे यह काम करने के लिए इंजेक्ट करने के बजाय .inject (0) का उपयोग करने की आवश्यकता क्यों है?
item_numbers.inject(0) {|sum, i| sum + i.amount}
ITEM_NUMBERS में से एक में इस कोड का इस्तेमाल किया है मेरी ITEM_NUMBERS मेज से वस्तुओं की एक सरणी है। .Mount विधि जो मैं उन पर लागू करता हूं, एक अलग तालिका में item_number का मान देखता है और इसे BigDecimal ऑब्जेक्ट के रूप में देता है। जाहिर है इंजेक्शन विधि तब सभी लौटाई i.amount ऑब्जेक्ट्स जोड़ती है और यह ठीक काम करती है।
मैं क्यों यह काम नहीं किया जब मैं इन बराबर किया जाना चाहिए
item_numbers.inject {|sum, i| sum + i.amount}
के रूप में इस बयान ने लिखा है मेरे भरोसेमंद गैंती पुस्तक के अनुसार के रूप में बस उत्सुक हूँ। क्या ऐसा इसलिए है क्योंकि i.amount एक BigDecimal है? यदि हां, तो अब यह क्यों काम करता है? यदि नहीं, तो यह क्यों काम नहीं करता है।
आप एक छोटे से परीक्षण (10..15) .inject कर ऐसा कर सकते हैं | योग, मैं | पी योग योग + मैं अंत यह वापस आ जाएगी: 10, 21, 33, 46, 60 => 75 आप _sum_ देख सकते हैं प्रारंभिक मूल्य – fl00r
कि यह अच्छी तरह से बताते हैं के रूप में सरणी से पहले आइटम हो जाता है। धन्यवाद। – brad