Robusto
Robusto

Reputation: 31883

In ActionScript, is there a way to test for existence of variable with datatype "Function"

So I have a class where I instantiate a variable callback like so:

public var callback:Function;

So far so good. Now, I want to add an event listener to this class and test for existence of the callback. I'm doing like so:

this.addEventListener(MouseEvent.MOUSE_OVER, function(event:MouseEvent) : void {
        if (callback) {
            // do some things
        }
});

This works great, doesn't throw any errors, but everywhere I test for callback I get the following warning:

3553: Function value used where type Boolean was expected.  
Possibly the parentheses () are missing after this function reference.

That bugged me, so I tried to get rid of the warning by testing for null and undefined. Those caused errors. I can't instantiate a Function as null, either.

I know, I know, real programmers only care about errors, not warnings. I will survive if this situation is not resolved. But it bothers me! :) Am I just being neurotic, or is there actually some way to test whether a real Function has been created without the IDE bitching about it?

Upvotes: 4

Views: 1038

Answers (4)

Nyeski
Nyeski

Reputation: 76

There's already an answer that works, but I thought I'd mention that you can also stop the warning from occurring by explicitly casting the result to a Boolean.

if (Boolean(callback)) {
// do something
}

Upvotes: 1

quoo
quoo

Reputation: 6307

Similar to using typeof:

if(callback is Function){

}

I believe should evaluate to true if the function exists and is a function and false if it is null or is not a function. (although if that doesn't work try if(callback && callback is function){}

Upvotes: 6

JeffryHouser
JeffryHouser

Reputation: 39408

if( !(callback == null)){
 // do something
}

Upvotes: 2

Hooray Im Helping
Hooray Im Helping

Reputation: 5264

Have you tried:

if (typeof callback == "function") {
  // do some things
}

?

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/operators.html#typeof

Upvotes: 0

Related Questions