[fpc-pascal] For ..in GetEnumerator Allocation
Michael Van Canneyt
michael at freepascal.org
Wed Oct 4 11:26:50 CEST 2017
On Wed, 4 Oct 2017, Ryan Joseph wrote:
> As I understand the for..in loop GetEnumerator method is expected to create a new object each time it’s called
> and FPC destroys it later when the loos is finished. Can I retain the enumerator and just reset it in-between calls?
> I’d like to remove all these alloc/deallocs so I can use for..in more efficiently in tight loops.
You can do so by overriding the newinstance and it's sister method of
your enumerator class.
As an alternative you can create an object enumeator.
It's simply allocated on the stack, and you can reset it in the enumerator
operator.
See the example in http://wiki.freepascal.org/for-in_loop
section: Using any identifiers instead of builtin MoveNext and Current
Michael.
More information about the fpc-pascal
mailing list