¿Por qué no se pueden escribir argumentos opcionales con un valor predeterminado de Null?
-
05-07-2019 - |
Pregunta
En ActionScript 3, cuando declara un argumento opcional al asignarle un valor predeterminado, el valor nulo no se puede usar en los argumentos escritos.
function Action(Param:int=null){
// 1184: Incompatible default value of type Null where int is expected.
}
function Action(Param:int=0){
// No compiler errors
}
¿Hay soluciones alternativas para esto, o valores de propósito general que puedan aplicarse a todos los tipos de datos?
Solución
Puede cambiar su int a Número y luego puede establecerlo en NaN, que es un número especial que significa "no un número" y esto puede representar su estado nulo para un Número.
Para verificar si algo es NaN, debes usar la función isNaN () y no val == NaN
, o no obtendrás lo que esperas.
function Action(param:Number = NaN) : void {
trace(param);
}
Para todos los demás objetos, puede establecerlos en nulos, pero los números "primitivos" se manejan de manera diferente en ActionScript.
Otros consejos
las variables int no pueden ser nulas, es por eso que obtienes ese error, solo los tipos de referencia como los objetos pueden ser nulos
En su lugar, puede utilizar NaN como un número especial en lugar de nulo. Si desea comprobar si algo es NaN, debe utilizar la función isNaN.
también puede incluir una marca en la firma del método para evitar que el parámetro se pase de int a number:
function whatever(intProvided:Boolean = false, someInt:int = 0):void
{
if(intProvided)
doSomeStuff();
}