A few weeks ago I added a new
forEach variation to Rogue that I've been finding very useful: an implicit forEach.
Fairly often I need a simple
forEach loop that just does one thing with each item in a list, for example either adding it to a result or calling a method on it:
forEach (n in list) sum += n
forEach (actor in actors) actor.update
It struck me that naming a control variable just to be able to use it once is exactly the kind of repetitive boilerplate that I like to avoid, and that's when I came up with this alternative syntax:
sum += (forEach in list)
(forEach in actors).update
Any time an implicit
forEach term is encountered, the statement containing that term is wrapped in a standard
forEach loop with a auto-generated control variable name and the term itself is replaced by the control variable name.
Here is the
forEach documentation on the project Wiki: