我想簡化一個代碼片段,其中我有一個主循環,其中放置了2個if語句。第一條if語句是關於測試「if (test1 or test2)
」,第二條是測試「if (test1 and test2)
」。爲了區分它們,我必須在更高的層次上(但仍然在主循環中)提供另一個「if」(在diagExpression boolean
上測試,見下文)。下面的代碼:將if語句簡化爲循環
// Main loop
while (Hit.arrayCurrent[Hit.coordCurrent[0]+k][Hit.coordCurrent[1]+l] == Hit.currentPlayer[1])
{
if (diagExpression)
{
if ((a > b) || (b > c))
return;
else if (d)
{
//do stuff1
}
}
else
{
if ((a > b) && (b > c))
return;
else if (d)
{
//do stuff1
}
}
}
我不知道如何來簡化這個代碼片斷,避免使用stuff1
2次做。
如果有人可以看到解決方案。
UPDATE:
diagExpression
的主循環前計算:
// Boolean for 2 versions
var diagExpression = false;
if (Hit.direction == 'rightbottom')
{
diagExpression = true;
shift_x = 1;
shift_y = 1;
factor_x = 1;
factor_y = 1;
limit_x = 7;
limit_y = 7;
}
else if (Hit.direction == 'left')
{
shift_x = -1;
shift_y = 0;
factor_x = -1;
factor_y = 1;
limit_x = 0;
limit_y = -1;
}
...
// Main loop
while (Hit.arrayCurrent[Hit.coordCurrent[0]+k][Hit.coordCurrent[1]+l] == Hit.currentPlayer[1])
我用不同的方向上的值到我的代碼,如果我有對角線方向和虛假垂直這個布爾值爲true /水平方向。
您的diagExpression請..請確保代碼讀取良好..也標記使用的語言 – nullpointer
diagExpression是一個布爾值,它是在主循環之前計算的。這是Javascript語言 – youpilat13
把上面的兩個回報。在他們之後,只有沒有返回的代碼執行它,寫'if(d)// do stuff1',一次。 –