je pense qu'il manque toujours l'info importante!! ;)
supposons que functiona, functionb et functionc aient des effets de bords, alors
Code:
1 2
|
if(functiona() || functionb() && functionc()) |
D'abord functionb() est appelé, si elle renvoie false alors functiona(9 est appelé. Quel que soit le resultat, functionc() n'est pas appelé et son effet de bord non executé!
ca s'appelle la "lazy evaluation", ca doit pas etre le terme technique mais en tous cas ca parle mieux comme ca : a partir du moment ou tu peux deduire le resultat tu ne lances pas l'evaluation de la suite.