Je suis en train de revoir un ancien code qui filtre le XML, mais cela pourrait facilement s'appliquer aux paramètres d'une méthode (comme je l'utilise, c'est essentiellement le cas). C'est un problème que j'ai l'impression de rencontrer et de ne pas connaître un bon moyen de contourner cela.AS3: Test d'arguments et de combinaisons optionnels
Donc, le problème est que j'ai 3 arguments. Ils sont tous facultatifs. Je veux voir ceux qui sont présents et tester si leurs valeurs basées sur celles qui sont présentes (triées en fonction de la probabilité):
var shiftDown : Boolean = false;
var controlDown : Boolean = false;
if ("@shift" in x)
{
shiftDown = Global.stringToBoolean([email protected]());
}
if ("@control" in x)
{
controlDown = Global.stringToBoolean([email protected]());
}
if ("@code" in x && "@shift" in x && "@control" in x)
{
if (KeyManager.keyIsDown(KeyManager[ [email protected]().toUpperCase() ]) && (KeyManager.shiftKey == shiftDown) && (KeyManager.controlKey == controlDown))
{
...
}
}
else if ("@code" in x && "@shift" in x)
{
if (KeyManager.keyIsDown(KeyManager[ [email protected]().toUpperCase() ]) && (KeyManager.shiftKey == shiftDown))
{
...
}
}
else if ("@code" in x && "@control" in x)
{
if (KeyManager.keyIsDown(KeyManager[ [email protected]().toUpperCase() ]) && (KeyManager.controlKey == controlDown))
{
...
}
}
else if ("@code" in x)
{
if (KeyManager.keyIsDown(KeyManager[ [email protected]().toUpperCase() ]))
{
...
}
}
else if ("@shift" in x)
{
if (KeyManager.shiftKey == shiftDown)
{
...
}
}
else if ("@control" in x)
{
if (KeyManager.controlKey == controlDown)
{
...
}
}
else if ("@control" in x) && ("@shift" in x))
{
if ((KeyManager.shiftKey == shiftDown) && (KeyManager.controlKey == controlDown))
{
...
}
}
Je me sens comme il doit y avoir un moyen plus court pour écrire ce avec tant de répétition dans sa forme actuelle. Quelqu'un peut-il suggérer une façon plus propre et plus efficace d'écrire cela?
Merci pour votre avis.
EDIT: L'ordre d'instruction if était erroné. Changé ça.
Ceci peut être généralisé. J'inclus juste mon code pour plus de clarté. Si la question générale n'est toujours pas claire, j'ai l'impression que c'est:
Quelle est la manière la plus propre/la plus efficace de tester toutes les combinaisons d'arguments exclusivement optionnels?
Peut shiftDown, controlDown variabled être vrai même s'il n'y a pas de shiftDown, controlDown dans le xml? – Patrick
Etes-vous sûr de l'ordre de vos Ifs, car si @code est défini, vous n'atteindrez jamais tous les autres ... – Patrick
shiftDown controlDown ne peut pas être vrai s'il n'est pas dans le XML. Ils par défaut à faux (que j'aurais dû inclure). Re: Commande. Oui, j'ai réalisé ça la nuit dernière en allant dormir! L'ordre avait besoin d'être révisé. – grey