वापस लाएं मैं एक तरीका खोजने की कोशिश कर रहा हूं कि मैं एक विधि को ओवरराइड कर सकता हूं, कुछ कर सकता हूं, और उसके बाद किसी भी कलाकृतियों को छोड़ दिए बिना वापस लौटा सकता हूं।रूबी - ओवरराइड विधि और फिर
मैंने इसे मोचा का उपयोग करके कार्यान्वित किया है लेकिन जाहिर है कि यह एक उत्पादन ऐप में उड़ान भरने वाला नहीं है। ध्यान दें कि नई विधि में पैरामीटर हैं और पुराना कोई नहीं है।
उदाहरण के रूप में
require 'rubygems'
require 'mocha'
class Example
def to_something
self.stubs(:attribs => other(1))
r = attribs_caller
self.unstub(:attribs)
r
end
def other(int)
{"other" => int }
end
def attribs_caller
attribs
end
def attribs
{"this" => 1 }
end
end
a1 = Example.new
puts a1.attribs_caller #=> this1
puts a1.to_something #=> other1
puts a1.attribs_caller #=> this1
अच्छा, इस के साथ एक मुद्दा यह तथ्य है कि नई विधि गतिशील है और कुछ पैरा की आवश्यकता है। हालांकि मैं इस विधि को गतिशील रूप से परिभाषित कर सकता हूं। मैंने इसे प्रतिबिंबित करने के लिए उदाहरण अपडेट किया। – stellard
ऐसा लगता है कि सही पैरामीटर ऑर्डरिंग 'alias alias_name original_name' है, न कि दूसरी तरफ ... – vemv