как использовать тип функции в AS3 (var f: Function) для метода f (s: String) - PullRequest
0 голосов
/ 19 ноября 2009

У меня есть класс, который имеет что-то вроде этого

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

}

поэтому мне нужно присвоить f функцию, которая принимает аргумент f(s), что-то вроде

myFoo.f = thefunction
function(s:String)

как все это сделать, чтобы он работал правильно?

Ответы [ 3 ]

4 голосов
/ 20 ноября 2009

Просто добавлю хороший пример:

        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;
        }

выдаст

 my string :)
 my string :(
 my string :(
 my string :)
3 голосов
/ 19 ноября 2009

если вы имеете в виду, как выполнять анонимные функции ...

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

Тогда вы можете использовать код, который у вас есть выше.

2 голосов
/ 19 ноября 2009

Вы не должны нигде указывать, что ваша функция принимает один строковый аргумент. Если он принимает int или 2 аргумента, - это будет ошибка времени выполнения.


myFoo.f = myFunction;

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...