Le problème du static c'est que le code ne va pas être réentrant. Il vaudrait mieux faire un vrai itérateur. En l’occurrence en Python à la main ça aurait pu donner un truc comme ça (facile à convertir en C++) :
classFoo:def__init__(self):self._count=1def__iter__(self):#pour pouvoir faire "for i in Foo():"returnselfdefnext(self):count=self._countifcount>3:raiseStopIterationself._count+=1returncount
On voit que le code avec les 'yield' est bien plus simple. On n'a pas par exemple à se soucier de mettre dans 'self' les valeurs qu'on veut garder dans le contexte, mais surtout la structure même du code est plus simple.
[^] # Re: gestion des erreurs
Posté par GuieA_7 (site web personnel) . En réponse à la dépêche Retour d'expérience sur Go. Évalué à 3.
Le problème du static c'est que le code ne va pas être réentrant. Il vaudrait mieux faire un vrai itérateur. En l’occurrence en Python à la main ça aurait pu donner un truc comme ça (facile à convertir en C++) :
On voit que le code avec les 'yield' est bien plus simple. On n'a pas par exemple à se soucier de mettre dans 'self' les valeurs qu'on veut garder dans le contexte, mais surtout la structure même du code est plus simple.