2011-05-22 87 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 
?>