वापस नहीं लौटाती है, मैं 'स्ट्रिंग' प्रकार की वस्तुओं पर 'टैप' विधि का उपयोग करते समय एक दिलचस्प समस्या में भाग गया।स्ट्रिंग ऑब्जेक्ट पर 'टैप' विधि अपेक्षित परिणाम
"abc".tap { |o| o = "xyz" } # this line returns "abc" instead of "xyz"
'टैप' विधि अन्य प्रकार की वस्तुओं पर काम करती है।
[].tap { |o| o << "xyz" } # this line returns ["xyz"] as expected
मैं विंडोज XP पर रेल 2.3.2 और रूबी 1.8.6 का उपयोग कर रहा हूं।
मुझे यहां क्या याद आ रही है?
अद्यतन 1: मैंने इस मुद्दे को हल किया। यह मेरे हिस्से पर एक उपयोग त्रुटि थी। पहले परिदृश्य में मैं इसे संशोधित करने के बजाय ब्लॉक पैरामीटर के मान को फिर से असाइन कर रहा था। मैं कोड को फिर से लिखने और अपेक्षित परिणाम प्राप्त करने में सक्षम था।
"abc".tap { |o| o.replace "xyz" }
अद्यतन 2: यहां उपयोग किया गया कोड केवल समस्या का प्रदर्शन करने के लिए है। मेरा वास्तविक कोड इस तरह दिखता नहीं है।
क्या आपके पास ऐसा करने का प्रयास करने का एक वास्तविक उदाहरण हो सकता है? –
मैंने इस मुद्दे को हल किया। यह मेरे हिस्से पर एक उपयोग त्रुटि थी। पहले परिदृश्य में मैं इसे संशोधित करने के बजाय ब्लॉक पैरामीटर के मान को फिर से असाइन कर रहा था। मैं कोड को फिर से लिखने और अपेक्षित परिणाम प्राप्त करने में सक्षम था। "एबीसी" .tap {| o | o.replace "xyz"} –