Я пересматриваю старый код, который фильтрует XML, но это может легко примениться к параметрам метода (как я его использую, по существу это). Это проблема, с которой я чувствую, что сталкиваюсь со многими, и не знаю, как это сделать.AS3: Тестирование для дополнительных аргументов и комбинаций
Так что проблема в том, что у меня есть 3 аргумента. Все они необязательны. Я хочу, чтобы увидеть, какие из них являются подарки и тест, если на основе их значения, какие из них присутствуют (отсортированный по вероятности):
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))
{
...
}
}
Я чувствую, что должен быть более короткий путь, чтобы написать это с таким большим количеством повторений в текущей форме. Может ли кто-нибудь предложить более чистый и эффективный способ написать это?
Спасибо за ваши мысли.
РЕДАКТИРОВАТЬ: В случае, если заявление было неправильным. Это изменилось.
Это может быть обобщено. Я просто включаю код для ясности. Если общий вопрос до сих пор не ясен, то создается впечатление:
Каков самый чистый/самый эффективный способ проверить все комбинации исключительно необязательных аргументов?
Может shiftDown, controlDown variabled быть правдой, даже если нет shiftDown, controlDown в xml? – Patrick
Вы уверены в порядке своих Ifs, потому что если @code установлен, вы никогда не достигнете всех остальных тестов ... – Patrick
shiftDown controlDown не может быть правдой, если они не находятся в XML. Они по умолчанию имеют значение false (которое я должен был включить). Изменение порядка. Да, я понял, что прошлой ночью, когда ложился спать! Приказ нуждается в пересмотре. – grey