2009-06-16 6 views
6

Dans ActionScript 3, lorsque vous déclarez un argument facultatif en lui attribuant une valeur par défaut, la valeur null ne peut pas être utilisée pour les arguments typés.Pourquoi les arguments optionnels typés ne peuvent-ils pas avoir la valeur par défaut Null?

function Action(Param:int=null){ 
    // 1184: Incompatible default value of type Null where int is expected. 
} 
function Action(Param:int=0){ 
    // No compiler errors 
} 

solutions de contournement pour cela, ou les valeurs d'usage général qui peuvent s'appliquer à tous les types de données?

Répondre

9

Vous pouvez changer votre int en nombre et puis pouvez le mettre à NaN qui est un nombre spécial qui signifie «pas un nombre» et cela peut représenter votre état nul pour un nombre.

Pour vérifier si quelque chose est NaN, vous devez utiliser la fonction isNaN() et non val == NaN, sinon vous n'obtiendrez pas ce que vous attendez.

function Action(param:Number = NaN) : void { 
    trace(param); 
} 

Pour tous les autres objets, vous pouvez les définir sur null, mais les nombres 'primitifs' sont gérés différemment dans Actionscript.

5

variables int ne peut pas être nulle, c'est pourquoi vous obtenez cette erreur, seuls les types de référence comme les objets peuvent être null

vous pouvez plutôt utiliser NaN comme un numéro spécial au lieu de null. Si vous voulez vérifier si quelque chose est NaN, vous devez utiliser la fonction isNaN.

0

vous pouvez également inclure un drapeau dans la signature de méthode pour éviter d'avoir le paramètre promu de int au numéro:

function whatever(intProvided:Boolean = false, someInt:int = 0):void 
{ 
    if(intProvided) 
     doSomeStuff(); 
} 
Questions connexes