ruby - Unexpected array behavior -


निम्न संशोधित करें विधि किसी भी तरह से पूरे @ x सरणी को संशोधित करती है बस एक और तत्व पैदा करने के बाद में धक्का दिया जाना चाहिए कैसे हो सकता है?

<पूर्व> def संशोधित करें I, st = @x [-1] टी [i] = t [i] + st end = x = [[10, 12]] @ एक्स और लेफ्टिनेंट ; & lt; संशोधित करें (0, 1) डालता है @ एक्स

संपादित निम्न कोड ने चाल किया है फिर भी मुझे आश्चर्य है कि यदि पी-डेबिट से छुटकारा पाना संभव है

  def संशोधित करें p, i, sa = p.to_a a [i] + = s * @ delta [i] वेक्टर तत्वों (ए) के अंत  

आपको शुरू से ही फिर से करना चाहिए, लेकिन छोटे परिवर्तन ... साइड इफेक्ट को कम करने के लिए अपनी पद्धति को बदलने का प्रयास करें।

यदि आप एक फिक्सएनम तत्व वापस करना चाहते हैं:

  def modifier i, st = @x [ -1] आर = टी [आई] + sr एंड  

या, यदि आप ट्यूपल्स के अधिक सरणी में इंजेक्शन लगाने के लिए एक सरणी वापस करना चाहते हैं

  डीफ संशोधित करें I, st = @x [-1] .dup t [i] = t [i] + st end  

समझ की भावना में, आपको रूबी ऑब्जेक्ट्स पर पढ़ना चाहिए और कैसे वे संदर्भ हैं और कैसे रुबी विधियों के दुष्प्रभाव हैं।

यह अध्ययन करें:

  a = [1,2] b = ab [0] = 4 डालता है & gt; [4,2]  

आप एक धोखा करना चाहते हैं

  a = [1,2] b = a.dup b [0] = 4 डालता है & gt; [1,2]  

Comments

Popular posts from this blog

ios - Form Sheet content disappearing -

MySql variables and php -

c++ - an enclosing-function local variable cannot be referenced in a lambda body unless if it is in capture list -