메서드를 재정의하고 무언가를 수행 한 다음 유물을 남기지 않고 되돌릴 수있는 방법을 찾으려고합니다.ruby - 메서드를 덮어 쓴 다음 되돌리기
저는 이것을 mocha를 사용하여 구현했지만, 프로덕션 응용 프로그램에서는 사용하지 않을 것입니다. 새 메소드에는 매개 변수가 있고 이전 매개 변수에는 매개 변수가 없습니다.
예
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