• [^] # Re: gestion des erreurs

    Posté par (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++) :

    class Foo:
     def __init__(self):
     self._count = 1
     def __iter__(self): #pour pouvoir faire "for i in Foo():"
     return self
     def next(self):
     count = self._count
     if count > 3:
     raise StopIteration
     self._count += 1
     return count
    
    

    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.