foreach - premature optimization vs cultivating good habits

Adam D. Ruppe via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jan 30 04:55:17 PST 2015


On Friday, 30 January 2015 at 11:55:16 UTC, Laeeth Isharc wrote:
> As I understand it, foreach allocates when a simple C-style for 
> using an array index would not.

foreach is just syntax sugar over a for loop. If there's any 
allocations, it is because your code had some, it isn't inherit 
to the loop. The doc definition even lists the translation of 
foreach to for in the case of ranges explicitly:

http://dlang.org/statement.html#ForeachStatement


The most likely allocation would be to a user-defined opApply 
delegate, and you can prevent that by making it opApply(scope 
your_delegate) - the scope word prevents any closure allocation.



More information about the Digitalmars-d-learn mailing list