2017-03-29 3 views
1

Certains langages de programmation supportent une directive "continue" dans les boucles pour passer à la boucle suivante. Comment faites-vous la même chose dans les langues qui n'ont pas cette directive? Je fais face à une situation maintenant à povray où j'ai besoin de ce comportement. Merci.Simulation de la directive "continue" et autres alternatives

Répondre

1

Dans le cas le plus simple, il suffit d'utiliser une condition:

#for (i, from, to) 
    // do common actions 
    #if (<condition is true>) 
    // do something special to the condition 
    #end 
#end 

Sinon, POV-Ray 3.7 supports the #break statement que vous pouvez utiliser pour émuler continue avec un peu d'aide de la récursivité - cependant, cela est tout à fait maladroite et inélégante :

#macro LoopWithContinuation(from, to) 
    #for (i, from, to) 
    #if (<condition is true>) 
     LoopWithContinuation(i + 1, to) 
     #break 
    #else 
     // do something 
    #end 
    #debug "" 
    #end 
#end 

LoopWithContinuation(1, 20) 

Gardez à l'esprit, cependant, que POV-Ray a une limite de profondeur de récursivité fixe de 200, cette approche ne convient pas pour les boucles plus longues.