AS3: как заставить параметры в функциях обратного вызова - PullRequest
2 голосов
/ 04 марта 2010

Я сейчас делаю что-то вроде этого:

myFunc(tracer);

function tracer(message:String):void{
 trace(message);
}

function myFunc(callback:Function):void{
 callback("Hello");
}

Теперь это работает отлично. Но как функция myFunc может знать, если данная функция обратного вызова принимает правильное число и тип аргументов в своей подписи?

Я хочу, чтобы я не вызывал что-то подобное в моем коде:

myFunc(tracer2);

function tracer2():void{
 trace("done");
}

function myFunc(callback:Function):void{
 // Argument mismatch!
 callback("Hello");
}

Есть ли способ сделать что-то подобное, чтобы использовать предупреждения / сообщения об ошибках компилятора и таким образом избегать исключений во время выполнения?

// Won't work :-(
function myFunc(callback(message:String):Function):{
 callback("Hello");
}

Ответы [ 2 ]

3 голосов
/ 04 марта 2010

Насколько я понимаю, это ситуация, которая может быть обнаружена только во время выполнения. AS3 не предлагает никакого механизма для такого типа проверки типов. Я хотел бы предложить, что если это важно, то вы получите проверку во время компиляции, передав объект со строго типизированным интерфейсом, а не просто передав функцию, где требуемая информация о типе будет потеряна.

1 голос
/ 25 февраля 2012

Я думаю, что вы можете добавить второй параметр в myFunc, который даст информацию о том, какие параметры предполагается отправить в функцию обратного вызова. Таким образом, вы могли бы иметь myFunc(tracer2,"null") в одном месте и myFunc(tracer,"String") в другом месте.

Я бы попробовал что-то вроде

function myFunc(callback:Function, ParamRequest:Array /* of String */ ):void{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...