Perché gli argomenti opzionali digitati non possono avere un valore Null predefinito?
-
05-07-2019 - |
Domanda
In ActionScript 3, quando si dichiara un argomento facoltativo assegnandogli un valore predefinito, il valore null non può essere utilizzato su argomenti digitati.
function Action(Param:int=null){
// 1184: Incompatible default value of type Null where int is expected.
}
function Action(Param:int=0){
// No compiler errors
}
Qualche soluzione alternativa per questo o valori di utilizzo generale applicabili a tutti i tipi di dati?
Soluzione
Puoi modificare il tuo int in Numero e quindi impostarlo su NaN che è un numero speciale che significa 'non un numero' e questo può rappresentare il tuo stato nullo per un Numero.
Per verificare se qualcosa è NaN, devi usare la funzione isNaN () e non val == NaN
, altrimenti non otterrai ciò che ti aspetti.
function Action(param:Number = NaN) : void {
trace(param);
}
Per tutti gli altri oggetti, è possibile impostarli su null, ma i numeri "primitivi" sono gestiti in modo diverso in Actionscript.
Altri suggerimenti
Le variabili int non possono essere nulle, ecco perché si ottiene quell'errore, solo i tipi di riferimento come gli oggetti possono essere nulli
Invece puoi usare NaN come numero speciale anziché null. Se vuoi verificare se qualcosa è NaN, devi usare la funzione isNaN.
potresti anche includere un flag nella firma del metodo per evitare che il parametro venga promosso da int a numero:
function whatever(intProvided:Boolean = false, someInt:int = 0):void
{
if(intProvided)
doSomeStuff();
}