Мне нужно пройти через число (xx). xx всегда начинается с нуля. Моя проблема в том, что если переменная moveDirection
равна +1, то xx увеличивается до достижения положительного значения range
. Если moveDirection
равно -1, то xx уменьшается до достижения отрицательного значения range
.Как уменьшить дублирование кода в этом примере
В приведенном ниже коде я сделал это с помощью проверки оператора if для moveDirection, затем я продублировал цикл for и отредактировал значения для каждого случая. Мой код находится в ActionScript3, но язык не имеет значения.
var p:Point;
var xx:int;
if (moveDirection > 0)
{
for (xx = 0; xx < range; xx++)
{
if (hitTestPoint(xx, yy))
{
return true;
}
}
}
else
{
for (xx = 0; xx > range; xx--)
{
if (hitTestPoint(xx, yy))
{
return true;
}
}
}
Есть ли лучший способ сделать это, возможно, без дублирования цикла for? Если есть какой-либо другой совет, он был бы весьма признателен.
Я бы изменил имя 'moveDirection' на' motionVector' или что-то в этом роде, чтобы понять, что он хранит. 'moveDirection' звучит слишком сильно, как переименование или что-то еще :) – porges
True. Я просто ленился и использовал предопределенные переменные, поэтому мне не пришлось самостоятельно определять их. : P –
Очень элегантный! Огромное спасибо. Меня всегда поражают всевозможные способы использования циклов (или любых других циклов). –