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))
{
...
}
}
내가 너무 많은 반복으로이를 작성하는 짧은 방법이 있어야한다 같은 느낌 현재의 형태입니다. 누군가 이것을 작성할 수있는보다 깨끗하고 효율적인 방법을 제안 할 수 있습니까?
의견을 보내 주셔서 감사합니다.
EDIT : if 문 순서가 잘못되었습니다. 그것을 바꿨다.
이것은 일반화 될 수 있습니다. 나는 명확성을 위해서 제 코드를 포함하고 있습니다. 일반적인 질문이 아직 명확하지 않은 경우 다음과 같은 느낌이 들게됩니다.
독점적 인 선택적 인수의 모든 조합을 테스트하는 가장 깨끗하고 효율적인 방법은 무엇입니까?
shiftDown, controlDown이 xml에도 없더라도 shiftDown, controlDown vary는 true가 될 수 있습니까? – Patrick
ifcode의 순서는 확실합니까? 왜냐하면 @code가 설정되면 다른 모든 테스트에 도달하지 않기 때문입니다 ... – Patrick
shiftDown controlDown은 XML에없는 경우 true 일 수 없습니다. 기본값은 false입니다 (포함시켜야 함). 다시 : 주문. 응, 어젯밤에 자고있는 동안 깨달았다. 주문에 개정이 필요했습니다. – grey