2011-08-10 5 views
1

내가AS3에서 변수에 게터 기능을 할당 할 수 있습니까?

function yea():int { 
... 
} 
var cool:Function=yea; 

을 할 수있는 나는 당신이 문자열 var fn:String = "wat"로 게터의 이름을 절약 할 수

function get wat():int { 
... 
} 
var mmmh:Function=wat; // this (tries to) assign the wat returned value 
+0

당신이 당신의 목적이 무엇인지를 설명한다면 어쩌면 누군가가 당신에게 해결 방법을 줄 것입니다. – goliatone

답변

1

글쎄, 난 arguments.callee로 내부에서 게터/세터 참조를 캡처 알고있는 유일한 방법입니다. 그러나 그것은 이상한 일입니다. :)

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import flash.utils.getTimer; 

    public class GetterTest extends Sprite 
    { 
     private var getterRef:Function; 
     private var setterRef:Function; 

     private var testValue:int = 0; 

     public function GetterTest() 
     { 
      stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
     } 

     private function onMouseDown(event:Event):void 
     { 
      if (getterRef != null) { 
       setterRef(getTimer()); 
       trace("references: test = ", getterRef()); 
      } else { 
       test = getTimer(); 
       trace("direct: test = ", test); 
      } 
     } 

     private function get test():int 
     { 
      trace("TEST! getter"); 
      getterRef = arguments.callee;   
      return testValue; 
     } 
     private function set test(value:int):void 
     {   
      trace("TEST! setter"); 
      setterRef = arguments.callee; 
      testValue = value; 
     } 
    } 
} 

위 작업이 수행되는 동안 질문에 대한 정답은 "하지 말 것"이라고 생각합니다. :)

+0

, 대부분 마지막 문장을 위해 : O –

0

같은 일을하는 방법을 알고 한 후 수익을 검색하기 위해 나중에 사용하지 않는 메소드의 값은 myObjectFromClass[fn]입니다.

0

나는 당신이 성취하려는 것을 확신하지 못합니다.

그냥 getter에 대한 참조를 유지하려는 경우 클로저 함수로 래핑 할 수 있습니다.

var mmh:Function = function():int { return wat; }; 
관련 문제