vararg 메서드를 다른 vararg 메서드의 프록시 역할을하고 싶지만 어떻게해야할지 모르겠다.ActionScript에서 Vararg 메서드 래핑
class MyClass {
public function a(...args:*):* {
// other code
b(args);
// other code
}
public function b(...args:*):* {
// do stuff with args
}
}
가 B를 호출하는 알아낼 수 있도록 내가 타입 시스템은 인수가 실제로 문자열이 아닌 배열로 가정되는 것을 알고 자바에서 코드를 포팅하고있어()에 의해 다음은 기본 코드는 인수를 직접 전달하면 모든 것이 예상대로 작동합니다.
그러나 ActionScript에서는 인수 배열이 프록시 메서드를 통해 호출 될 때 다른 배열로 래핑됩니다.
따라서 b()를 직접 호출하면 배열의 깊이가 한 수준에 불과합니다. 그러나 a()를 통해 b()가 호출되면 배열은 두 단계 깊이입니다.
누구든지이 문제를 해결하기위한 트릭을 알고 있습니까?
(참고 : 실제 코드에서 a()와 b()는 실제로 별도의 클래스에 있으며 실제로 b() 구현을 만지 싶지 않습니다. 내 마음의 콘텐츠하지만, B는()을 변경하지 않아야합니다.)
와우. 그것은 야생입니다. 나는 그것이 가능하다는 것을 전혀 몰랐다. 대단히 감사합니다!!! – benjismith
'arguments'도 여전히 존재합니다. 단지 'caller' 속성이 누락되었습니다 : http://livedocs.adobe.com/flex/3/langref/arguments.html – hasseg
오? 나는 그것을 시험해 보았고 그것이 정의되지 않았다는 것을 계속했다. – Sciolist