Порівняння генераторів з об'єктами класу Iterator

Головна перевага генераторів – це їхня простота. Набагато менше шаблонного коду треба написати порівняно з реалізацією об'єкта класу Iterator, і цей код набагато простіший і зрозуміліший. Наприклад, ця функція і клас роблять те саме.

Loading...

Однак за цю простоту доводиться платити: генератори можуть бути тільки односпрямованими ітераторами. Їх не можна перемотати після старту ітерації. Це також означає, що той самий генератор не можна використовувати кілька разів: генератор необхідно перестворювати щоразу, знову викликавши функцію генератора.

Дивіться також