Si je déclare une fonction comme ceci:AS3 « Erreur: Valeur de retour doit être défini »
public function foo():void
{
// do something
}
Parfois, dans cette fonction, je pourrais décider de début-out, souvent avec un message de journal, comme suit:
public function foo():void
{
if(somethingWentWrong)
{
log("blah blah");
return;
}
// do something
}
où log()
est essentiellement un wrapper pour trace()
, avec la signature public function log(msg:String):void
pour économiser un peu d'espace, je pourrais réécrire le chèque et précoce vers ceci:
public function foo():void
{
if(somethingWentWrong)
return log("blah blah");
// do something
}
Cette compile et fonctionne sans problème à 99% du temps, sauf, de temps en temps (quand il y a un bogue dans une autre partie sans rapport du projet, ou je fais un nettoyage), je vais une erreur de compilation sous forme de:
"Error: Return value must be undefined"
Et je dois réécrire sous la forme longue afin de compiler. Une fois compilé, je peux ensuite le renvoyer à sa version courte et tout est de nouveau heureux. Quand cette erreur se produit cependant, c'est irritant et je n'aime pas avoir à réécrire le code en introduisant 3 lignes de redondance. Une idée de pourquoi ça se passe (et seulement très occasionnellement) et comment je peux l'arrêter à court d'écrire la forme longue partout? Techniquement, voir log()
renvoie void
, il ne devrait pas y avoir de problème.
bon point sur le code étant plus difficile à grok – divillysausages