UPD (de mon commentaire): Il est certainement pas une bonne pratique de choisir un certain nombre magique pour indiquer la valeur absence, à moins que vous pouvez être tout à fait sûr que ce nombre magique ne semble pas à la suite de certains arithmétique (ce qui est généralement vrai). Donc, pour fonctionner, ainsi que int
, pour indiquer l'absence de valeur réelle de la meilleure approche est ici soit d'utiliser un type plus large que int
(par exemple Number
), ou passer un certain drapeau (valeur Boolean
). Le choix devrait dépendre de si vous voulez souligner l'importance du fait que la valeur transmise est intégrale.
Si vous vous sentez à l'aise avec l'expansion type d'argument, alors vous devez utiliser NaN
et faites ceci:
function setMyValue (myVar : Number = NaN) : void
{
if (isNaN(myVar))
{
/* Generate a value for myVar */
}
else
{
/* Use the supplied value for myVar */
}
}
la fois plus précis sur le plan technique et il est également plus stable. Il vous permettra également de taper fortement au moment de la compilation et ne causerait pas de bogues bizarres comme dans le cas d'utilisation de Object
.
Notez que cela ne fonctionnera pas avec int
comme l'une des réponses suggère. int
a seulement valeurs numériques, et NaN
va obtenir sous la contrainte à 0. Vous aurez besoin d'utiliser le type Number
.
Si vous êtes inquiet au sujet de la performance - ne soyez pas. L'utilisation de Number
au lieu de int
ou uint
est généralement OK.
UPD: Si vous voulez marquer explicitement cet argument devrait faire partie intégrante il suffit d'utiliser le drapeau supplémentaire et le type exact - il serait beaucoup plus claire.
function setMyValue (isIntValueSupplied : Boolean = false, intValue : int = 0) : void
{
if (isIntValueSupplied)
{
/* Generate or use a default value of intValue */
}
else
{
/* Use the supplied value for intValue */
}
}
Une autre option est de définir votre propre type avec une valeur ajoutée, par exemple MaybeInt
, qui contient une valeur entière et un indicateur (qu'il ait été initialisé ou non). De cette façon, vous devez indiquer clairement que la valeur doit être intégrale ou sans valeur. Cependant, cette approche peut être un peu encombrante.
Ah, OK, numéro est légèrement différent. Number par défaut à NaN, de sorte que l'instance peut être gérée en utilisant isNaN (myVar). Toujours vouloir résoudre pour int et uint, cependant. – Wikiup