2013-08-06 78 views
1

我經常遇到這種情況,我有一個複雜的if語句,其中包含大量內部if語句和大量重複代碼。它基本上歸結爲我有一堆的情況和某些代碼塊基於這些語句執行,但如果不同的條件是真的,那麼我希望這些代碼塊在不同的條件下執行。這裏有一個通用的例子:一種簡化這些if語句的方法

if (condition) { 
    if (conditionA) { 
     codeBlockW; 
    } 
    else if (conditionB) { 
     codeBlockX; 
    } 
    else if (conditionC) { 
     codeBlockY; 
    } 
    else if (conditionD) { 
     codeBlockZ; 
    } 
} 
else { 
    if (conditionA) { 
     codeBlockZ; 
    } 
    else if (conditionB) { 
     codeBlockY; 
    } 
    else if (conditionC) { 
     codeBlockX; 
    } 
    else if (conditionD) { 
     codeBlockW; 
    } 
} 

回答

0
if ((condition AND conditionA) OR (!condition AND conditionD)) { codeBlockW } 
else if ((condition AND conditionB) OR (!condition AND conditionC)) { codeBlockX } 
else if ((condition AND conditionC) OR (!condition AND conditionB)) { codeBlockY } 
else if ((condition AND conditionD) OR (!condition AND conditionA)) { codeBlockZ } 

可以縮短一點點像這樣,也許,我無法想象任何短路...