2009-06-16 11 views
6

In ActionScript 3, quando si dichiara un argomento facoltativo assegnandogli un valore predefinito, il valore null non può essere utilizzato su argomenti digitati.Perché gli argomenti facoltativi non digitati hanno un valore predefinito 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 
} 

Qualsiasi soluzione alternativa o valori generici che possono essere applicati a tutti i tipi di dati?

risposta

9

È possibile modificare l'int a Numero e quindi impostarlo su NaN, che è un numero speciale che significa "non un numero" e che può rappresentare lo stato nullo per un numero.

Per verificare se qualcosa è NaN, è necessario utilizzare la funzione isNaN() e non val == NaN oppure non si otterrà ciò che si aspetta.

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

Per tutti gli altri oggetti, è possibile impostare su null, ma i numeri 'primitive' sono gestiti in modo diverso in Actionscript.

5

variabili int non può essere nullo, è per questo che si ottiene questo errore, solo i tipi di riferimento come gli oggetti possono essere nullo

Invece è possibile utilizzare NaN come un numero speciale, invece di null. Se vuoi verificare se qualcosa è NaN devi usare la funzione isNaN.

0

si potrebbe includere anche una bandiera nella firma del metodo per evitare di avere il parametro promosso da int a numero:

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