Ben... Si ce qu'il y a avant ne donne aucune chance d'arriver dans default:, ça n'a pas une grande importance. Et c'est bien déterministe.
Evidemment si c'est une valeur entrée par l'utilisateur, c'est différent! :D
Ça revient au m^ avec la méthode du tableau (que je trouve jolie, bravo! ;-)) on ne vérifie pas si on demande le 5e élément d'un tableau de 4. ;-)
-- DJiK
marc.quinton-PAS-DE-
John Gallet wrote:
Ecrivez du code DETERMINISTE, nom d'un chat !
pour info, les fonctions avec valeur par défaut faisant partie intégrante du langage php depuis un bon moment utilisent le meme principe ; ex
function check_admin($user, $group='user'){ if($user == '...') }
est-ce que cette fonction est plus ou moins déterministe que le switch avec un défault ?
de meme un code utilisant un switch, pourquoi le qualifies-tu d'indeterministe, pour ma part je dirais plutot que sans le default, le code ne rendra pas de reponse correcte puis que non prévue, et par-la meme sera plus indéterministe.
l'idéal en fait est de lever une exception dans le cas ou un défault génere une erreur non gérable localement. A defaut on retourne ou boolean false, ou un objet de la classe Error, facon Pear.
tiens, un exemple avec le calcul de factoriel en récurcivité :
function fact($n=1){ switch($n){ case 1: return 1; break;
default: return $n * fact($n-1); break; } }
sauf erreur dans le code, il n'est pas si indéterministe que tu peux le laisser entendre mon petit bout de code. Bon c'est vrai qu'ici, ca peut se resumer a un simple if. Mais imaginons une opération un peu plus complexe il il faille tester 0, 1, 2 et tous le reste une réponse commune, je ne vois pas pourquoi dans ces conditions je me priverais du default de l'instruction switch.
John Gallet wrote:
Ecrivez du code DETERMINISTE, nom d'un chat !
pour info, les fonctions avec valeur par défaut faisant partie intégrante
du langage php depuis un bon moment utilisent le meme principe ; ex
function check_admin($user, $group='user'){
if($user == '...')
}
est-ce que cette fonction est plus ou moins déterministe que le switch
avec un défault ?
de meme un code utilisant un switch, pourquoi le qualifies-tu d'indeterministe,
pour ma part je dirais plutot que sans le default, le code ne rendra pas de
reponse correcte puis que non prévue, et par-la meme sera plus indéterministe.
l'idéal en fait est de lever une exception dans le cas ou un défault génere
une erreur non gérable localement. A defaut on retourne ou boolean false,
ou un objet de la classe Error, facon Pear.
tiens, un exemple avec le calcul de factoriel en récurcivité :
function fact($n=1){
switch($n){
case 1:
return 1;
break;
default:
return $n * fact($n-1);
break;
}
}
sauf erreur dans le code, il n'est pas si indéterministe que tu peux le
laisser entendre mon petit bout de code. Bon c'est vrai qu'ici, ca peut
se resumer a un simple if. Mais imaginons une opération un peu plus complexe
il il faille tester 0, 1, 2 et tous le reste une réponse commune, je ne
vois pas pourquoi dans ces conditions je me priverais du default de
l'instruction switch.
pour info, les fonctions avec valeur par défaut faisant partie intégrante du langage php depuis un bon moment utilisent le meme principe ; ex
function check_admin($user, $group='user'){ if($user == '...') }
est-ce que cette fonction est plus ou moins déterministe que le switch avec un défault ?
de meme un code utilisant un switch, pourquoi le qualifies-tu d'indeterministe, pour ma part je dirais plutot que sans le default, le code ne rendra pas de reponse correcte puis que non prévue, et par-la meme sera plus indéterministe.
l'idéal en fait est de lever une exception dans le cas ou un défault génere une erreur non gérable localement. A defaut on retourne ou boolean false, ou un objet de la classe Error, facon Pear.
tiens, un exemple avec le calcul de factoriel en récurcivité :
function fact($n=1){ switch($n){ case 1: return 1; break;
default: return $n * fact($n-1); break; } }
sauf erreur dans le code, il n'est pas si indéterministe que tu peux le laisser entendre mon petit bout de code. Bon c'est vrai qu'ici, ca peut se resumer a un simple if. Mais imaginons une opération un peu plus complexe il il faille tester 0, 1, 2 et tous le reste une réponse commune, je ne vois pas pourquoi dans ces conditions je me priverais du default de l'instruction switch.
nospam
wrote:
function fact($n=1){ switch($n){ case 1: return 1; break;
default: return $n * fact($n-1); break; } }
sauf erreur dans le code, il n'est pas si indéterministe que tu peux le laisser entendre mon petit bout de code. Bon c'est vrai qu'ici, ca peut se resumer a un simple if. Mais imaginons une opération un peu plus complexe il il faille tester 0, 1, 2 et tous le reste une réponse commune, je ne vois pas pourquoi dans ces conditions je me priverais du default de l'instruction switch.
Dans ce cas tu auras un problème si la fonction est appellée avec $n = -1 par exemple
function fact($n=1){
switch($n){
case 1:
return 1;
break;
default:
return $n * fact($n-1);
break;
}
}
sauf erreur dans le code, il n'est pas si indéterministe que tu peux le
laisser entendre mon petit bout de code. Bon c'est vrai qu'ici, ca peut
se resumer a un simple if. Mais imaginons une opération un peu plus complexe
il il faille tester 0, 1, 2 et tous le reste une réponse commune, je ne
vois pas pourquoi dans ces conditions je me priverais du default de
l'instruction switch.
Dans ce cas tu auras un problème si la fonction est appellée
avec $n = -1 par exemple
function fact($n=1){ switch($n){ case 1: return 1; break;
default: return $n * fact($n-1); break; } }
sauf erreur dans le code, il n'est pas si indéterministe que tu peux le laisser entendre mon petit bout de code. Bon c'est vrai qu'ici, ca peut se resumer a un simple if. Mais imaginons une opération un peu plus complexe il il faille tester 0, 1, 2 et tous le reste une réponse commune, je ne vois pas pourquoi dans ces conditions je me priverais du default de l'instruction switch.
Dans ce cas tu auras un problème si la fonction est appellée avec $n = -1 par exemple