2009-11-19 2 views

Répondre

2

Vous ne devez pointer nulle part, votre fonction prend un argument String. Si cela prend int, ou prend 2 arguments, - ce serait une erreur d'exécution.

 

myFoo.f = myFunction; 

public void function myFunction(s: String): void 
{ 
} 

public class Foo { 
    public var f:Function; 
    public void method(s:String) 
    { 
     f(s); 
    } 
} 
 
3

si vous le sens, comment faire des fonctions anonymes ...

myFoo.f = function(s : String) { 
    //do Stuff to string 
} 

Ensuite, vous pouvez utiliser le code que vous avez ci-dessus.

+0

boo pour la syntaxe de l'argument bizarre –

+0

C'est la syntaxe parfaitement valable et, dans la raison, logiquement équivalent à l'habituel syntaxe pour les définitions de fonctions nommées. –

4

Juste pour ajouter un bel exemple:

 import mx.events.FlexEvent; 
     public var f:Function; 

     protected function application1_creationCompleteHandler(event:FlexEvent):void 
     { 
      f = addSmile; 
      method(' my string'); 
      f = addFrown; 
      method(' my string'); 

      // Or you can do it straight like this: 
      f(' my string'); 


      // Or alternatively write a function for replacing f 
      makeF(addSmile); 
      f(' my string'); 
     } 

     public function method(s:String):void 
     { 
      f(s); 
     } 

     private function addSmile(s:String):void 
     { 
      trace (s+' :)');  
     } 
     private function addFrown(s:String):void 
     { 
      trace (s+' :(');  
     }      

     protected function makeF(newF:Function):void 
     { 
      f= newF; 
     } 

volonté sortie

my string :) 
my string :(
my string :(
my string :) 
Questions connexes