2011-05-22 85 views
4
if(condition 1){ 
var=changeVar(var); 
changed=true; 
} 

if(condition 2){ 
var=changeVar2(var); 
changed=true; 
} 

if(condition 3){ 
var=changeVar3(var); 
changed=true; 
} 

我不喜歡changed=true;重複三次。我該如何讓這段代碼更簡單?

+0

坦率地說,你的代碼並不複雜。但是我建議你看看你所有的'changeVar()'函數做什麼,因爲它們都使用'var'作爲參數,也許這些函數可以合併?那麼你只需要一個函數來調用...... – 2011-05-22 13:25:14

回答

7

你可以保存舊var,並且比較呢?

oldVar = var; 

//your code here. 

changed = (oldVar != var); 

我曾在那裏==在第一,但不會是給一個錯誤的(或者至少不同)sollution然後在這個問題嗎?

+0

如果在代碼片段之前'changed'始終爲false,則此方法有效。 – AndersTornkvist 2011-05-22 13:29:04

+0

是的,這確實假設如果var沒有改變,它在原始代碼中是錯誤的。 – Nanne 2011-05-22 13:43:01

+0

這也假設'var'不是一個對象。如果是這樣,對象引用將使這不工作如何你期望它(它永遠不會設置'changed'到'true')... – ircmaxell 2011-05-22 14:02:38

1
if (condition 1 || condition 2 || condition 3) { 
    if (condition 1) { 
     var = changeVar(var); 
    } 
    if (condition 2) { 
     var = changeVar2(var); 
    } 
    if (condition 3) { 
     var = changeVar3(var); 
    } 
    changed = true; 
} 
1
$changed = true; 
if ($cond1) {} 
elseif ($cond2) {} 
else { $changed = false; } 
+0

,如果'cond1'和'cond2'成立? – aioobe 2011-05-22 13:20:42

+0

在這裏並不認爲是這種情況,考慮到每個單獨條件下相同變量的變化。無論如何,** Nanne **的答案更加優雅 – ashein 2011-05-22 13:23:54

-1
if(condition1||condition2||condition3) { 
    switch(condition) { 
     case 1: var = changeVar(var); 
     break; 
     case 2: var = changeVar2(var); 
     break; 
     case 3: var = changeVar3(var); 
     break; 
    } 
    changed = true; 
} 
+0

我很抱歉,但在我看來,問題中沒有「條件」。 – AndersTornkvist 2011-05-22 13:27:00

2
<?php 
if (condition 1) { 
    var=changeVar(var); 
} 
if (condition 2) { 
    var=changeVar2(var); 
} 
if (condition 3) { 
    var=changeVar3(var); 
} 
changed=(condition 1||condition 2||condition 3||changed); // set changed value only if condition 1, condition 2 or condition 3 is true, keep old value otherwise 
?>