2010-09-14 5 views
2

Je suis à la recherche d'une construction sémantique ou d'un langage qui va simplifier certaines de mes instructions if. Si j'ai une instruction if avec un ou, où je "choisis" entre deux valeurs, j'aimerais que cette variable choisie soit disponible plus tard dans le code.Syntaxe ou construction pour simplifier l'instruction if()?

Je vais écrire ceci en pseudo-code:

if (x or y) { 
    function(z); 
} 

z est la valeur de x ou y, selon déclenché la if pour être vrai. Sinon, je suis en train d'écrire

if (x) { 
    ... 
    function(x); 
} 

if (y) { 
    ... 
    function(y); 
} 

maintenant dans cet exemple la duplication est pas beaucoup, mais dans ma situation actuelle, il y a environ 6 lignes de code qui serait doublon dans chaque bloc if. Alors j'écris quelque chose comme:

if (x) { 
    z = x; 
} 

if (y) { 
    z = y; 
} 

if (z) { 
    ... 
    function(z); 
} 

Mais que tout semble si rond-point, je pense que quelque part le long de la ligne un gourou est venu avec une belle syntaxe pour faire une ligne if. Y at-il une construction dans une langue où je peux lier la valeur de déclenchement dans une variable dans le bloc suivant? Quelle serait cette structure appelée?

La situation actuelle dans laquelle je travaille est en PHP, donc je me rends compte que PHP n'a peut-être pas cette capacité.

Répondre

1

En Python (également Ruby), l'expression x or y évalue à x si elle est vraie, sinon y. Vous pouvez écrire l'instruction en tant que f(x or y) ou z = x or y.

+0

Merci, jleedev, c'est exactement ce que je cherchais. Y a-t-il un nom pour cette construction? – user151841

1

Pour cette situation exacte. Vous pouvez utiliser l'opérateur ?:

z = x ? x : y; 

qui se lit comme suit: z est (si x est pas faux) x sinon il y est.

0

En fait, quelque chose comme

if ($z = ($x ? $x : $y)) { 
    function($z); 
} 

Works comme annoncé en PHP. Merci, slebetman!

Questions connexes