On Saturday, August 13, 2011 02:10:35 Andrej Mitrovic wrote: > On 8/13/11, bearophile <bearophileh...@lycos.com> wrote: > > Andrej Mitrovic: > >> void main(string[] args) > >> { > >> > >> args.popFront; // get rid of name > >> > >> foreach (arg; args) > >> { > >> } > >> > >> } > > > > If I see code like that I probably rewrite it like this: > > > > void main(in string[] args) { > > > > foreach (arg; args[1..$]) { > > } > > > > } > > And what benefit is there to that? I pop the argument and then don't > have to worry about it ever again. Whereas you're using [1..$], and > later on in your argument parsing code you might introduce a bug like: > > auto userArgumentCount = args.length; // woops, you'll get 1 extra > here due to app name.
It depends on what you're doing. If all you're doing is iterating over the arguments once, then there's no reason to pop an element off. It's more code and is slightly less efficient. However, if you're going to do more than that with the arguments, then it may very well just be better to pop off the front before doing anything else with them. Either approach could be better depending on what else you're doing in your code. - Jonathan M Davis